Hier wird gezeigt, wie Sie das ||
und &&
in einer einzelnen Zeile verwenden, um die Ausführung von Befehlen zu verketten: Wie kann ich in einem Bash-Skript nach apt-get-Fehlern suchen?
Ich versuche, eine Skriptausführung zu stoppen, wenn eine bestimmte Bedingung fehlschlägt.
z.B
false || echo "Obvious error because its false on left" && exit
Hier wird Obvious error because its false on the left
die Konsole gedruckt und verlassen, was ich wollte.
true || echo "This shouldn't print" && exit
Hier gibt es keinen Echodruck, aber der exit
Befehl wird auch ausgeführt, dh die Konsole ist geschlossen. Sollte der exit
Befehl nicht nicht ausgeführt werden, weil der Echo-Befehl rechts nicht ausgeführt wurde? Oder wird standardmäßig eine Aussage auf der linken Seite eines &&
Operators als falsch angesehen ?
Bearbeiten: Ich hätte es vorher erwähnen sollen, mein Ziel war es, den Fehler zu wiederholen und zu beenden, wenn es nicht klar war. In Bezug auf meinen speziellen Fall, Fehler beim Gruppieren von Bedingungen mit && und || abzufangen, löst die Antwort @ bodhi.zazen das Problem.
Die Antwort von @takatakatek macht die Flusskontrolle klarer und die Bash-Guide-Links sind ausgezeichnet
Die Antwort von @muru enthält eine gute Erklärung dafür, warum Sie set -e nicht verwenden sollten, wenn Sie möchten, dass benutzerdefinierte Fehlermeldungen mit Alternativen zur Verwendung von Perl und Trap ausgegeben werden. Dies ist meiner Meinung nach eine robustere Methode und ich sehe mich ab meinem zweiten Bash-Skript damit!