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

Ram Rachum
quelle

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.

Bis auf weiteres angehalten.
quelle
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.

voretaq7
quelle
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