Die Frage ist ziemlich einfach. Ich kann den Beendigungscode des vorhergehenden Befehls erhalten, indem ich benutze $?
. Aber was genau ist das?
Ich glaube nicht, dass es sich um eine Variable handelt, da der Name der Variablen keine Sonderzeichen außer enthält _
.
foo?foo=10
wird zu dem Fehler führen: foo?foo=10: command not found
Also, wenn es keine Variable ist, was ist es dann? Gibt es andere wie es?
command-line
bash
daltonfury42
quelle
quelle
Antworten:
Was ist es?
$?
ist eine integrierte Variable, die den Beendigungsstatus eines Befehls, einer Funktion oder des Skripts selbst speichert.$?
Liest den Exit-Status des zuletzt ausgeführten Befehls. Gibt nach Rückkehr einer Funktion$?
den Exit-Status des zuletzt in der Funktion ausgeführten Befehls an. Auf diese Weise gibt Bash Funktionen einen "Rückgabewert". Es wird0
bei Erfolg oder einer Ganzzahl im1 - 255
Fehlerbereich zurückgegeben.Gibt es andere wie es auch?
Ja, in bash gibt es mehrere solche eingebauten Variablen. Sie können eine Liste siehe hier . Siehe: http://www.tldp.org/LDP/abs/html/exit-status.html
quelle
dash
,ksh
,zsh
ua).$status
für den gleichen Zweck$?
ist eine Variable, aber eine spezielle, deshalb sind Sonderzeichen erlaubt.($?)
Wird auf den Exit-Status der zuletzt ausgeführten Vordergrund-Pipeline erweitert.Es ist nicht die einzige, die Shell behandelt mehrere Parameter speziell. Diese Parameter dürfen nur referenziert werden; eine Zuordnung zu ihnen ist nicht erlaubt:
Quellen:
quelle
"$*"
ist nicht nur alle Positionsparameter als ein einzelnes Wort, sondern alle Positionsparameter, die durch das erste Zeichen vonIFS
als ein einzelnes Wort getrennt sind. Da das Ergebnis einer Feldaufteilung unterliegt, wenn es nicht in Anführungszeichen gesetzt wird, wird der Effekt wie$@
im nicht zitierten Fall verwendet.$?
ist ein besonderes Shell-Parameter (Variable).Im Allgemeinen müssen alle benutzerdefinierten Variablen nur mit den Zeichen der Zeichenklasse benannt werden,
[:alnum:]
dh[a-zA-Z0-9_]
(kann auch nicht mit beginnen[0-9]
).Kurz gesagt,
$?
ist eine spezielle Variable ( und es gibt einige davon) ), die als internes Merkmal der Shell selbst betrachtet werden kann und den Exit-Code des vorherigen Befehls liefert (ob erfolgreich oder fehlgeschlagen).Sie können dies lesen , um mehr über Variablen zu erfahren.
quelle
$?
ist eine spezielle Variable in der Bash, die immer den Return / Exit-Code enthält des zuletzt ausgeführten Befehls enthält.Sie können es in einem Terminal anzeigen, indem Sie ausführen
echo $?
.Rückkehrcodes liegen im Bereich [0; 255].
Ein Rückkehrcode von
0
bedeutet normalerweise, dass alles in Ordnung ist.Andere Werte weisen auf Fehler hin. Die meisten Anwendungen kehren zurück
1
Werte oder benutzerdefinierte Werte zurück. Wenn ein Befehl nicht gefunden wurde, enthält die Variable normalerweise127
Wenn Sie diese Variable auf einen bestimmten Wert setzen möchten, können Sie dies einfach mit tun
bash -c "exit 5"
, um beispielsweise den Rückkehrcode zurückzugeben5
.quelle
setstatus() { return 5; }