Estoy trabajando con Bash 3, y estoy tratando de formar un condicional. En C / C ++, es muy simple:((A || B) && C)
. En Bash, está resultando que no es así (creo que los autores de Git deben haber contribuido con este código antes de pasar a otros esfuerzos).
Esto no funciona. Tenga en cuenta que <0 or 1>
no es una cadena literal; significa un 0 o 1 (generalmente proviene de 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
En resultado de:
line 322: syntax error near unexpected token `[['
Entonces intenté:
A=<0 or 1>
B=<0 or 1>
C=<0 or 1>
if [ ([ "$A" -eq "0" ]) || ([ "$B" -ne "0" ]) ] && [ "$C" -eq "0" ]; then ... fi
en resultado de:
line 322: syntax error near unexpected token `[['
Parte del problema es que los resultados de búsqueda son ejemplos triviales, y no los ejemplos más complejos con condicionales compuestos.
¿Cómo realizo un simple ((A || B) && C)
en Bash?
Estoy listo para desenrollarlo y repetir los mismos comandos en varios bloques:
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