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 nachexitund - 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.