Ostatní odpovědi dobře pokryly přímou otázku, ale možná vás bude zajímat i použití set -e . S tím, jakýkoli příkaz, který selže (mimo konkrétní kontexty jako if testy) způsobí přerušení skriptu. Pro určité skripty je to velmi užitečné.
Zkuste:
my_command || { echo 'my_command failed' ; exit 1; }
Čtyři změny:
- Změňte
&&do|| - Použijte
{ }místo( ) - Představte
;poexita - mezery za
{a před}
Protože chcete zprávu vytisknout a ukončit pouze v případě, že příkaz selže (ukončí se s nenulovou hodnotou), potřebujete || ne && .
cmd1 && cmd2
poběží cmd2 když cmd1 uspěje (hodnota ukončení 0 ). Kde jako
cmd1 || cmd2
poběží cmd2 když cmd1 selže (hodnota výstupu je nenulová).
Pomocí ( ) způsobí, že příkaz uvnitř nich bude spuštěn v sub-shell a volání exit odtud způsobí, že opustíte sub-shell a ne váš původní shell, takže provádění pokračuje ve vašem původním shellu.
K překonání tohoto problému použijte { }
Poslední dvě změny vyžaduje bash.