Las otras respuestas han cubierto bien la pregunta directa, pero también puede estar interesado en usar set -e . Con eso, cualquier comando que falle (fuera de contextos específicos como if tests) hará que el script se cancele. Para ciertos scripts, es muy útil.
Prueba:
my_command || { echo 'my_command failed' ; exit 1; }
Cuatro cambios:
- Cambiar
&&a|| - Usar
{ }en lugar de( ) - Presente
;después deexity - espacios después de
{y antes de}
Dado que desea imprimir el mensaje y salir solo cuando el comando falla (sale con un valor distinto de cero), necesita un || no es un && .
cmd1 && cmd2
ejecutará cmd2 cuando cmd1 tiene éxito (valor de salida 0 ). donde como
cmd1 || cmd2
ejecutará cmd2 cuando cmd1 falla (valor de salida distinto de cero).
Usando ( ) hace que el comando dentro de ellos se ejecute en un sub-shell y llamando a un exit a partir de ahí, hace que salga de la subcapa y no de su caparazón original, por lo que la ejecución continúa en su caparazón original.
Para superar este uso { }
bash requiere los dos últimos cambios.