2012-04-23 11 views

Respuesta

19

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 
1
if [[ "$a" == "something" ]] || [[ $n == 2 && "$b" == "something_else" ]]; then 
    ... 
fi 
+4

POSIX Conformidad del shell: 'if [" $ a "=" algo "-o \ ($ n -eq 2 -a" $ b "=" something_else "\)]; luego echo sí; fi' – Kaz

+0

Es bastante estúpido cómo '[' no utiliza '[' como paréntesis para agrupar subexpresiones, ¿verdad? – Kaz