Bash: Führen Sie eine ausführbare Datei mit einem guten Exit-Status aus


32

Ich möchte eine ausführbare Datei unter Linux ausführen und unabhängig vom zurückgegebenen Exit-Status einen guten Exit-Status zurückgeben. (dh kein Fehler.)

(Dies liegt daran, dass ich sh -exdas Skript verwende und es auch dann weiter ausführen soll, wenn ein (bestimmter) Befehl fehlschlägt.)

Antworten:


47

Probieren Sie es aus:

command || true

Von man bash:

Die Shell wird nicht beendet, wenn der fehlgeschlagene Befehl Teil der Befehlsliste ist, die unmittelbar auf das Schlüsselwort while oder until folgt, Teil des Tests nach den reservierten if- oder elif-Wörtern, Teil eines Befehls, der in einer &&- oder ⎪⎪-Liste ausgeführt wird, mit Ausnahme von Befehl nach dem letzten && oder ⎪⎪, jeder Befehl in einer Pipeline außer dem letzten, oder wenn der Rückgabewert des Befehls mit! invertiert wird.


auch eine gute :)
voretaq7

1

Versuchen Sie es (executable ; exit 0)oder schließen Sie es in ein Shell-Skript ein, das immer 0 beendet.


1
Dies funktioniert in den meisten Fällen einwandfrei, es richtet jedoch eine Subshell ein. Wenn dies beispielsweise (cd foo; exit 0)erfolgreich ist, werden Sie danach nicht in "foo" enden, da Ihr cwd zu dem zurückgeführt wird, in dem Sie sich zuvor befunden haben. Sie cd foo || truebleiben jedoch in "foo", wenn es erfolgreich ist.
Bis auf weiteres angehalten.

Ein guter Punkt - wenn Ihr Prozess zusätzliche Nebenwirkungen hat (Festlegen von Umgebungsvariablen, Ändern von Verzeichnissen usw.), funktioniert dies nicht.
Voretaq7
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.