Eu tenho esse script sh de teste que posso executar no meu computador e que não deve produzir nada como saída se tudo funcionar. Eu usei o scp para transferir tudo na pasta em que estou trabalhando para um servidor remoto e quando executo no servidor remoto recebo erros como
egrep: Unmatched ) or \)
egrep: Unmatched ) or \)
./script.sh: line 229: ./helperScripts/script2.pl: No such file or directory
Não recebi esses erros no meu computador e quando verifico para ver se script2.pl está em helperScripts, ele está lá
Quando executo sh -version no servidor remoto, recebo
GNU bash, version 4.1.2(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Quando executo sh -version no terminal do meu computador, recebo
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.
Não sei se isso importa. Alguém sabe o que posso fazer, prefiro não ter que reescrever as coisas no meu roteiro porque tenho tentado fazer isso e parece que mais problemas continuam surgindo quando eu faço os novos
Responder1
Nãoprecisarimporta, mas sim, épodeimporta dependendo de como você escreve. E você não forneceu o script para ninguém apontar como escrever para qualquer shell Bourne. Se você preferir apenas versões do BASH que sejam mais compatíveis entre si...
InstalarCerveja caseirano seu Mac usando Terminal.app
ouiTerm2.app
. E com o Homebrew, instale o BASH ( brew install bash
). Em seguida, altere seu shell no Mac: chsh -s /usr/local/bin/bash
. Sair. Faça login. Hoje, você obtém o BASH 4.4 no macOS/OS X, que é muito mais compatível com as outras versões do BASH que você possui. Isso não poupará algumas reescritas dos scripts atuais, mas quase certamente eliminará os problemas dos novos scripts.
Scripts locais para o Mac também podem ser usados #!/usr/local/bin/bash
sem alterar seu shell.
Você também pode precisar instalar o Xcode para compilar software do Homebrew. Se você não fez isso após instalar o Xcode (da App Store), instale as ferramentas de linha de comando do Xcode com xcode-select --install
.