Le altre risposte hanno coperto bene la domanda diretta, ma potresti anche essere interessato a utilizzare set -e
. Con ciò, qualsiasi comando che fallisce (al di fuori di contesti specifici come if
tests) causerà l'interruzione dello script. Per alcuni script, è molto utile.
Prova:
my_command || { echo 'my_command failed' ; exit 1; }
Quattro modifiche:
- Cambia
&&
a||
- Usa
{ }
al posto di( )
- Introduci
;
dopoexit
e - spazi dopo
{
e prima del}
Dal momento che vuoi stampare il messaggio ed uscire solo quando il comando fallisce (esce con un valore diverso da zero) hai bisogno di un ||
non un &&
.
cmd1 && cmd2
eseguirà cmd2
quando cmd1
riesce(valore di uscita 0
). Dove come
cmd1 || cmd2
eseguirà cmd2
quando cmd1
fallisce(valore di uscita diverso da zero).
Usando ( )
esegue il comando al loro interno in una sotto-shell e chiamando un exit
da lì ti fa uscire dalla sotto-shell e non dalla tua shell originale, quindi l'esecuzione continua nella tua shell originale.
Per superare questo uso { }
Le ultime due modifiche sono richieste da bash.