Beenden Sie den Status der Befehle vor dem letzten Befehl

863
Amit Kumar Gupta

Unter OS X, Linux und anderen Systemen können Sie $?den Exit-Code des letzten Befehls abrufen. Gibt es eine Möglichkeit, Codes älterer Befehle zu beenden? Entweder indem Sie sagen "Gib mir den Exit-Code des nthvorherigen Befehls" oder indem Du sagst "Gib mir den Exit-Code des Prozesses mit PID p"?

0
Sie können den Exit-Code selbst nach Ausgeben von Befehlen an eine Datei anhängen w17t vor 9 Jahren 0

1 Antwort auf die Frage

1
Arkenklo

Der Exit-Code eines Befehls wird nur einmal ausgegeben. Wenn er nicht weiter verarbeitet wird, speichert der Exit-Code nur die Shell. bashspeichert nur den Beendigungscode für den letzten Befehl.

Um den Exit-Code älterer Befehle nachzuschlagen, müssen Sie sie wie folgt in einer Variablen speichern:

$ echo "This command will succeed" $ exitcode=$?  ...  $ echo $exitcode 0 
Danke für die Antwort. Können Sie mich auf eine Dokumentation verweisen, in der bestätigt wird, dass bash nur den letzten Exit-Code speichert? Amit Kumar Gupta vor 9 Jahren 0
Ich kann nichts ausdrücklich finden, aber Exit-Status gehen von Natur aus verloren, wenn sie nicht explizit gespeichert werden. In `man bash` finden wir unter" Special Parameters "die Definition für $? "Wird auf den Exit-Status der zuletzt ausgeführten Vordergrund-Pipeline erweitert." Es wird nicht erwähnt, dass im bash-Handbuch alte Exit-Status nachgeschlagen werden. Arkenklo vor 9 Jahren 0