Estou trabalhando com o Bash 3 e tentando formar uma condicional. Em C / C ++, a sua simples mortos: ((A || B) && C)
. No Bash, não está sendo assim (acho que os autores do Git devem ter contribuído com esse código antes de avançarem para outros empreendimentos).
Isso não funciona. Observe que <0 or 1>
não é uma string literal; significa 0 ou 1 (geralmente vem grep -i
).
A=<0 or 1>
B=<0 or 1>
C=<0 or 1>
if [ [ "$A" -eq "0" ] || [ "$B" -ne "0" ] ] && [ "$C" -eqe "0" ]; then ... fi
Isso resulta em:
line 322: syntax error near unexpected token `[['
Eu então tentei:
A=<0 or 1>
B=<0 or 1>
C=<0 or 1>
if [ ([ "$A" -eq "0" ]) || ([ "$B" -ne "0" ]) ] && [ "$C" -eq "0" ]; then ... fi
resulta em:
line 322: syntax error near unexpected token `[['
Parte do problema é que os resultados da pesquisa são exemplos triviais, e não os exemplos mais complexos com condicionais compostos.
Como faço para executar um simples ((A || B) && C)
no Bash?
Estou pronto para desenrolá-lo e repetir os mesmos comandos em vários blocos:
A=<0 or 1>
B=<0 or 1>
C=<0 or 1>
if [ "$A" -eq "0" ] && [ "$C" -eq "0" ]; then
...
elif [ "$B" -ne "0" ] && [ "$C" -eq "0" ]; then
...
fi