Jeder in bash ausgeführte Befehl gibt einen Exit-Code zurück.
Immer wenn ich einen Befehl an der Bash-Eingabeaufforderung eingebe, soll der Beendigungsstatus angezeigt werden, z. echo $?
Wenn ich beispielsweise eine echo "hello";
Bash-Eingabeaufforderung ausführe , sollte die Ausgabe wie folgt aussehen:
linux@linux$ hello
linux@linux$ 0
Antworten:
Der Beendigungscode des zuletzt ausgeführten Befehls wird in der
$?
Umgebungsvariablen gespeichert . Sie können diese Variable also einfach zur Standard-Eingabeaufforderung hinzufügen, und der Beendigungscode wird immer dort gedruckt. Die Eingabeaufforderung wird in der$PS1
Umgebungsvariablen gespeichert . Es wird anfänglich im/etc/bash.bashrc
Skript und später im Skript festgelegt$HOME/.bashrc
.Bearbeiten Sie also die Zeile in
$HOME/.bashrc
(/etc/bash.bashrc
wäre systemweit) von ihrem Standardwert:dazu (zum Beispiel):
Die Standardeingabeaufforderung wurde folgendermaßen geändert:
Die 0 in den Klammern ist Ihr Beendigungscode, siehe:
Die Bedeutung finden Sie unter http://www.tldp.org/LDP/abs/html/exitcodes.html
quelle
readlink /proc/$$/exe
please kopieren ? 0 bedeutet kein Fehler, haben Sie etwas versucht, das einen Fehler ergibt:^C
oderfalse
oderasdasdasd
?PS1=$(printf "%s\\\\u@\h:%s%s\w[$?]$%s " "$yellow" "$end" "$blue" "$end")
, aber es zeigt nur die0
ganze Zeit. Irgendeine Idee warum?$?
bereits erweitert ist,0
wenn du dein setztPS1
. Tunecho $PS1
Sie und Sie werden sehen. Sie müssen entweder einfache Anführungszeichen verwenden oder es wie entkommen\$?
.Ein anderer Weg, den ich aus dem Arch Wiki gewählt habe, war
trap
:Bewirken:
quelle
Hier ist ein einfaches Beispiel:
Wenn Sie doppelte Anführungszeichen verwenden, müssen Sie einen Backslash hinzufügen, um Folgendes zu umgehen
$
:Ausgabe:
Noch besser ist es, den Exit-Code nur dann auszudrucken, wenn er nicht Null ist.
Beispielausgabe:
Erläuterung:
${var#pattern}
Dies ist eine Bash-Parameter-Erweiterung, bei der das kürzeste übereinstimmende Muster von der Vorderseite von $ var entfernt wird. In diesem Fall entfernen wir also0
von vorne$?
, wodurch der Beendigungscode von effektiv abgeschnitten wird0
.Wenn Sie doppelte Anführungszeichen verwenden,
$?
wird ersetzt, wennPS1
festgelegt, anstatt jedes Mal ausgewertet zu werden. Tunecho $PS1
Sie dies, um zu bestätigen, dass Sie keinen fest codierten Wert in habenPS1
.quelle