Die anderen Antworten haben die direkte Frage gut abgedeckt, aber Sie könnten auch daran interessiert sein, set -e
zu verwenden . Damit wird jeder fehlgeschlagene Befehl (außerhalb bestimmter Kontexte wie if
Tests) führt zum Abbruch des Skripts. Für bestimmte Skripte ist es sehr nützlich.
Versuchen Sie:
my_command || { echo 'my_command failed' ; exit 1; }
Vier Änderungen:
- Ändern Sie
&&
bis||
- Verwenden Sie
{ }
anstelle von( )
- Führen Sie
;
ein nachexit
und - Leerzeichen nach
{
und vor}
Da Sie die Nachricht drucken und nur beenden möchten, wenn der Befehl fehlschlägt (beendet mit einem Wert ungleich Null), benötigen Sie einen ||
kein &&
.
cmd1 && cmd2
wird cmd2
ausführen wenn cmd1
erfolgreich ist (Ausgangswert 0
). Wo als
cmd1 || cmd2
wird cmd2
ausführen wenn cmd1
schlägt fehl (Ausgangswert ungleich Null).
Mit ( )
lässt den darin enthaltenen Befehl in einer Sub-Shell laufen und Aufruf von exit
von dort bewirkt, dass Sie die Sub-Shell verlassen und nicht Ihre ursprüngliche Shell, daher wird die Ausführung in Ihrer ursprünglichen Shell fortgesetzt.
Um dies zu umgehen, verwenden Sie { }
Die letzten beiden Änderungen werden von bash benötigt.