No processo de escrever um script de shell, deparei-me com a seguinte instrução if / else que fica em algum lugar no meio do script:
if [ $act -eq "add" ]
then
read - "add or update: " $comm
git commit -m "$comm $file"
else
git commit -m "$act $file"
fi
O erro retornado é:
./gitup: line 13: [: add: integer expression expected
e depois prossegue com o restante do script. Como posso fazer com que o segmento if avalie / compare a variável com uma entrada de string em vez de um número inteiro; um erro diferente foi necessário ao usar "! =" entre outras coisas que tentei.
bash
shell-script
bash-scripting
tony_perkis666
fonte
fonte
[[]]
teste é uma construção específica do Bash, e este exemplo funciona tão bem com o POSIX[]
quanto usado na pergunta. Se o intérprete é explicitamente dado como#!/bin/bash
ou similar, ele[[]]
pode ser usado sem problemas (e é um pouco mais rápido que a alternativa no Bash , acredito - não que seja um gargalo de qualquer maneira), caso contrário, deve-se ficar com ele[]
. Se alguém não precisar de detalhes específicos sobre o Bash, o script será executado um pouco mais rápido, por exemplo, no Dash. E o POSIX garante portabilidade inerente.Este método também funcionaria. Muito semelhante à resposta do @ Guru, mas elimina a necessidade de colchetes duplos.
fonte