Aquí se muestra el uso de ||
y &&
en una sola línea para concatenar la ejecución de comandos: ¿Cómo puedo verificar si hay errores de apt-get en un script bash?
Estoy tratando de detener la ejecución de un script si falla una determinada condición,
p.ej
false || echo "Obvious error because its false on left" && exit
Aquí imprime Obvious error because its false on the left
y sale de la consola, que es lo que quería.
true || echo "This shouldn't print" && exit
Aquí, no hay impresión de eco, pero el exit
comando también se ejecuta, es decir, la consola está cerrada, ¿no debería exit
ejecutarse el comando porque el comando de eco de la derecha no se ejecutó? ¿O es por defecto una declaración considerada falsa en el lado izquierdo de un &&
operador?
Editar: debería haberlo mencionado antes, mi objetivo era hacer eco del error y salir si no estaba claro. wrt a mi caso específico de errores de captura al agrupar condiciones usando && y ||, @ bodhi.zazen respuesta resuelve el problema
La respuesta de @takatakatek deja más claro el control de flujo y los enlaces de la guía bash son excelentes
La respuesta de @muru tiene una buena explicación de por qué no usar set -e si desea que se generen mensajes de error personalizados con alternativas de uso de perl y trap, lo que creo que es una forma más sólida y me veo usándolo desde mi segundo script de bash en adelante.