2017-12-03 3 views

Antwort

6

Von help if:

if: if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi

Befehle ausführen, basierend auf an Bedingungen geknüpft.

Die if COMMANDS Liste wird ausgeführt. Wenn sein Exit-Status Null ist, dann ist die then COMMANDS Liste ausgeführt wird. Andernfalls jede elif COMMANDS Liste ist wiederum ausgeführt wird, und wenn sein Beendigungsstatus Null ist, wird die entsprechende then COMMANDS Liste ausgeführt, und das, wenn der Befehl abgeschlossen ist. Ansonsten wird die else COMMANDS Liste ausgeführt, falls vorhanden. Der Exit-Status des gesamten Konstrukts ist der Beendigungsstatus des letzten Befehls ausgeführt wird, oder Null, wenn keine Bedingung wahr getestet.

Ausgangsstatus: Gibt den Status des letzten ausgeführten Befehls zurück.

(betonen und formatieren meins).

Also, wenn es kein else Teil, und wenn der Befehl endet mit einem Nicht-Null-Code getestet wird, dann wird der Return-Code ist 0.

(Aber die Aussage bash, wenn Anweisungen geben immer Null ist falsch, wie in dem hervorgehobenen Teil von help if angegeben, der oben eingeschlossen ist).

+1

* Exit-Status des letzten ausgeführten Befehls *, daher wird möglicherweise keine Null zurückgegeben: 'if true; dann ls nicht existierende Datei; fi' gefolgt von 'echo $?' ergibt '1'. – cdarke

+1

@cdarke: Ich war sicher, dass jemand auf diese argumentieren würde, so begann ich die Antwort der Bearbeitung einer Notiz zu schließen, bis ich merkte, ich 'help if' wurde paraphrasiert. Also habe ich den Schnitt abgebrochen, in der Hoffnung, dass die Leser den Inhalt von "help if" lesen würden, den ich aufgenommen habe. –

+1

@cdarke, insbesondere der hervorgehobene Inhalt: *** Der Exit-Status des gesamten Konstrukts ist der Exit-Status des zuletzt ausgeführten Befehls, *** ** oder Null, wenn keine Bedingung auf True geprüft wurde. ** –

Verwandte Themen