Antworten:
$?
wird auf den Exit-Status der zuletzt ausgeführten Vordergrund-Pipeline erweitert. Siehe den Abschnitt Spezielle Parameter im Bash-Handbuch .
Einfacher ausgedrückt ist es der Beendigungsstatus des letzten Befehls.
Die Antwort von Cjm ist richtig, $?
kann aber auf alberne Weise in Shell-Skripten verwendet werden, und ich möchte davor warnen. Viele schlechte Shell-Skripte haben ein wiederholtes Codemuster:
run_some_command
EXIT_STATUS=$?
if [ "$EXIT_STATUS" -eq "0" ]
then
# Do work when command exists on success
else
# Do work for when command has a failure exit
fi
Wenn es überhaupt möglich ist (Lesbarkeitsbedenken können manchmal auftreten), sollten Sie diese Situation anders codieren:
if run_some_command
then
# Do work when command exists on success
else
# Do failure exit work
fi
Diese letztere Verwendung ist schneller, verschmutzt den variablen Namespace der Shell nicht mit temporären Variablen, kann für den Menschen oft viel besser lesbar sein und fördert die Verwendung von "positiver Logik", der Praxis des Schreibens von Bedingungen ohne Negationen, die kognitiv sind Einfachheit in den meisten Situationen. Es entfällt $?
größtenteils die Verwendung von .
Zusätzlich zu dem, was cjm sagte , $?
wurde der vorherige Prozess normal (oder erfolgreich) beendet , wenn der Wert 0 ist. Ansonsten ist ein Fehler aufgetreten.
diff
Beendet mit einer 0, wenn die verglichenen Dateien identisch sind, mit einer 1, wenn sie unterschiedlich sind, und 2 ist ein Fehler.
$?
-Der Exit-Status des zuletzt ausgeführten Befehls.
$0
-Der Dateiname des aktuellen Skripts.
$#
-Die Anzahl der Argumente, die an ein Skript übergeben wurden.
$$
-Die Prozessnummer der aktuellen Shell. Bei Shell-Skripten ist dies die Prozess-ID, unter der sie ausgeführt werden.
$? Geben Sie uns bei Aufforderung den Ausführungsstatus des letzten Ausführungsbefehls. Der Wert '0' zeigt an, dass der Befehl erfolgreich ausgeführt wurde, und '1' bedeutet, dass der Befehl nicht erfolgreich ausgeführt wurde.
$?
Bestimmt den Exit-Status des ausgeführten Befehls. $
gefolgt von Zahlen (zB $1
, $2
usw.) die Parameter in dem Shell - Skript darstellt.