Frage Bash: Führe eine ausführbare Datei aus, die einen guten Exit-Status liefert


Ich möchte eine ausführbare Datei in Linux ausführen, und unabhängig von dem Exit-Status, den es zurückgibt, möchte ich einen guten Exit-Status zurückgeben. (d. h. kein Fehler.)

(Dies ist, weil ich verwende sh -ex und ich möchte, dass das Skript auch dann weiterläuft, wenn ein (spezifischer) Befehl fehlschlägt.)


22
2018-01-28 19:40


Ursprung




Antworten:


Probieren Sie es aus:

command || true

Von man bash:

Die Shell tut es nicht   Beenden, wenn der fehlgeschlagene Befehl Teil des Befehls ist   Liste sofort nach einer Weile oder bis Stichwort,   Teil des Tests nach dem if oder elif reserviert   Wörter, Teil eines beliebigen Befehls, der in einer && oder ⎪⎪ -Liste ausgeführt wird   außer dem Befehl, der dem abschließenden && oder ⎪⎪ folgt   Befehl in einer Pipeline aber die letzte, oder wenn der Befehl ist   Rückgabewert wird mit! invertiert.


34
2018-01-28 19:53



auch ein guter :) - voretaq7


Versuchen (executable ; exit 0)Alternativ können Sie es in ein Shell-Skript einfügen, das immer 0 beendet.


1
2018-01-28 19:53



Dies funktioniert in den meisten Fällen gut, aber es richtet eine Subshell ein, wenn zum Beispiel (cd foo; exit 0) ist erfolgreich, du wirst danach nicht in "foo" enden, da dein cwd zu dem zurückkehrt, in dem du vorher warst. Jedoch, cd foo || true wird dich in "foo" lassen, wenn es erfolgreich ist. - Dennis Williamson
Guter Punkt - wenn Ihr Prozess zusätzliche Nebenwirkungen hat (Einstellen von Umgebungsvariablen, Wechseln von Verzeichnissen usw.), wird dies nicht funktionieren. - voretaq7