Pido disculpas de antemano si esta es una pregunta duplicada. Hice un esfuerzo para buscar / verificar antes de preguntar aquí.
Me siento cómodo escribiendo frases sencillas como esta:
foocommand && foocommand2 && foocommand3
La idea es que solo quiero que se ejecuten comandos posteriores si el anterior fue "exitoso".
Estoy escribiendo un guión algo largo y esta frase no es factible porque parece un gran bloque de código confuso para todos los demás.
Quiero espaciar los comandos y escribir comentarios entre ellos en el script. ¿Cómo puedo hacer esto y aún tener el equivalente de && allí?
||y &&(en oposición a |o &) se llama cortocircuito. El comportamiento utilizado con estos últimos operadores se llama evaluación entusiasta.
a && b && csolo se ejecutará bsi atiene éxito, por lo que "solo se ejecuta csi btiene éxito" y "solo se ejecuta csi ay bambos tienen éxito" son declaraciones equivalentes: bno puede tener éxito a menos que tenga aéxito.
a || b && ces más ilustrativo.
true || false && echo hisaldrá hi. La especificación dice: Los operadores "&&" y "||" tendrá la misma precedencia y se evaluará con asociatividad izquierda.
&&no significa que el comando posterior se ejecutará si el anterior se ha realizado correctamente. Significa que el comando se ejecutará si el resultado colectivo de todos los comandos anteriores en la lista de comandos es exitoso. Puede saber esto, pero los futuros lectores pueden malinterpretar.