Michael Mrozek cobre a maioria dos problemas e suas correções funcionarão desde que você está usando o Bash.
Você pode estar interessado no fato de que a capacidade de criar um script com argumentos é um bashismo. Em sh
ou dash
, seu main.sh
não ecoará nada porque os argumentos para o script de origem são ignorados e $1
se referirá ao argumento para main.sh.
Quando você fonte o script em sh
, é como se você acabou de copiar e colou o texto do script de origem para o arquivo do qual foi originado. Considere o seguinte (note que fiz a correção que Michael recomendou):
$ bash ./test.sh
A String
$ sh ./test.sh
$ sh ./test.sh "HELLO WORLD"
HELLO WORLD