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
;dopoexite - 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.