No Ubuntu, executo o seguinte script (que deve falhar ou ter sucesso aleatoriamente para fins de teste):
if [ "$RANDOM" -gt 16384 ]; then
echo "Success!"
exit 0
else
echo "Failure!"
exit 1
fi
com
sh random.sh
mas falha com
random.sh: 1: [: Illegal number:
Failure!
Qual é a causa do problema?
A
$RANDOM
variável é uma extensão bash, então você tem que invocar seu script combash
em vez desh
. No Ubuntu,sh
é tipicamente vinculado ao shell mais levedash
que não suporta essas extensões.Veja também Diferença entre sh e Bash
Para ter certeza razoável de que o interpretador correto está sendo usado, adicione um shebang ao seu script:
e torná-lo executável:
Agora, um usuário pode simplesmente executar o script sem especificar qual interpretador ele precisa para funcionar corretamente: