Frage Bedeutung von $? in Shell-Skripten


Was macht

echo $?

in Bash Programmierung bedeuten?


76
2017-08-30 18:33


Ursprung


Antworten:


Dies ist der Exit-Status des zuletzt ausgeführten Befehls.

Zum Beispiel der Befehl true gibt immer einen Status von zurück 0 und false gibt immer einen Status von zurück 1:

true
echo $? # echoes 0
false
echo $? # echoes 1

Aus dem Handbuch: (erreichbar durch Aufruf man bash in deiner Schale)

$?Expandiert in den Exit-Status der zuletzt ausgeführten Vordergrund-Pipeline.

Per Konvention ein Exit-Status von 0 bedeutet Erfolg, und Nicht-Null-Rückgabestatus bedeutet Fehler. Lerne mehr über Ausgangsstatus  auf wikipedia.

Es gibt andere spezielle Variablen wie diese, die Sie in diesem Online-Handbuch sehen können: https://www.gnu.org/s/bash/manual/bash.html#Special-Parameters


91
2017-08-30 18:35



$? Gibt den Ausgangswert des zuletzt ausgeführten Befehls zurück. echo $? druckt diesen Wert auf der Konsole. Null bedeutet eine erfolgreiche Ausführung, während Werte ungleich Null verschiedenen Ursachen für Fehler zugeordnet werden.

Daher beim Scripten; Ich neige dazu, die folgende Syntax zu verwenden

if [ $? -eq 0 ]; then
 # do something
else
 # do something else
fi

Der Vergleich ist auf gleich 0 oder nicht gleich 0 durchzuführen


6
2017-12-16 09:21



Es hat den letzten Statuscode (Exit-Wert) eines Befehls.


5
2017-08-30 18:35



echo $? - Gibt den EXIT STATUS des zuletzt ausgeführter Befehl . Dieser AUSGANGSSTATUS wäre höchstwahrscheinlich eine Zahl mit NULL, die impliziert Erfolg und irgendein Nicht-Null-Wert, der anzeigt Fehler

?  - Dies ist ein spezieller Parameter / Variable in bash.

$? - Er gibt den in der Variablen gespeicherten Wert "?" An.

Einige ähnliche spezielle Parameter in BASH sind 1,2, *, # (normalerweise im echo-Befehl als $ 1, $ 2, $ *, $ # usw.).

Hoffe das hilft....


4
2017-10-19 19:18



Von http://www.gnu.org/s/bash/manual/bash.html#Special-Parameters

?
Expands to the exit status of the most recently executed foreground pipeline. 

2
2017-08-30 18:36



Gibt das Ergebnis des letzten ausgeführten Unix-Befehls aus

0 implies true
1 implies false

1
2018-03-17 07:06



Sehen Das Bash-Handbuch unter 3.4.2 Spezielle Parameter:

? - Expandiert in den Exit-Status der zuletzt ausgeführten Vordergrund-Pipeline.

Es ist ein wenig schwer zu finden, weil es nicht als aufgeführt ist $? (Der Variablenname ist "nur" ?). Siehe auch die Ausgangsstatus Abschnitt, natürlich ;-)

Glückliche Kodierung.


0
2017-08-30 18:39