Von man bash
:
$? Erweitert auf den Exit-Status der zuletzt ausgeführten Vordergrund-Pipeline.
echo $?
gibt den Exit-Status des letzten Befehls zurück. Du hast $?
das ist der Exit-Status des zuletzt ausgeführten Befehls, der mit einem Fehler beendet wurde (höchstwahrscheinlich). Befehle werden nach erfolgreichem Abschluss mit einem Exit-Status von 0
beendet (höchstwahrscheinlich). Der letzte Befehl lieferte die Ausgabe 0
seit echo $v
auf der vorherigen Zeile ohne Fehler beendet.
Wenn Sie die Befehle ausführen
v=4
echo $v
echo $?
Sie erhalten die Ausgabe als:
4 (from echo $v)
0 (from echo $?)
Versuchen Sie auch:
true
echo $?
Sie erhalten 0
.
false
echo $?
Sie erhalten 1
.
Die true
Befehl tut nichts, er wird nur mit einem Statuscode 0
beendet; und die false
Befehl tut auch nichts, er wird nur mit einem Statuscode beendet, der einen Fehler anzeigt (d. h. mit dem Statuscode 1
).
$?
ist in Shellscripts nützlich, um zu entscheiden, was zu tun ist, je nachdem, wie der vorherige Befehl funktioniert hat (Überprüfung des Beendigungsstatus). Wir können erwarten, dass der Exit-Status 0
ist wenn der vorherige Befehl funktioniert hat (erfolgreich beendet wurde), andernfalls ein numerischer Wert ungleich Null.
Demo-Beispiel:
#!/bin/bash
patience=3
read -t "$patience" -p "Press 'Enter' if you run Unix or Linux, otherwise press 'ctrl+d' "
status="$?"
if [[ $status -eq 0 ]]
then
echo "That's great :-)"
elif [[ $status -eq 1 ]]
then
echo "(exit status=$status)
You are welcome to try Unix or Linux :-)"
else
echo "(exit status=$status)
You did not answer within $patience seconds. Anyway :-)"
fi
echo "'Unix & Linux' is a question/answer web site for
Unix and Linux operating systems"
Sie fragen sich vielleicht, wie man ein Bash-Shellscript ohne Unix oder Linux ausführt;-)