¿Cómo logro algo como lo siguiente en bash?¿Cómo hacer condicionales complejos en bash? (mezcla de 'y' &&, 'o' || ...)
if ("$a" == "something" || ($n == 2 && "$b" == "something_else")); then
...
fi
¿Cómo logro algo como lo siguiente en bash?¿Cómo hacer condicionales complejos en bash? (mezcla de 'y' &&, 'o' || ...)
if ("$a" == "something" || ($n == 2 && "$b" == "something_else")); then
...
fi
Casi lo consiguió:
if [[ "$a" == "something" || ($n == 2 && "$b" == "something_else") ]]; then
De hecho, los paréntesis se pueden dejar fuera debido a la precedencia de operadores, por lo que también puede escribirse como
if [[ "$a" == "something" || $n == 2 && "$b" == "something_else" ]]; then
if [[ "$a" == "something" ]] || [[ $n == 2 && "$b" == "something_else" ]]; then
...
fi
POSIX Conformidad del shell: 'if [" $ a "=" algo "-o \ ($ n -eq 2 -a" $ b "=" something_else "\)]; luego echo sí; fi' – Kaz
Es bastante estúpido cómo '[' no utiliza '[' como paréntesis para agrupar subexpresiones, ¿verdad? – Kaz