Beim Durchlaufen eines Shell-Skripts sah ich den Begriff "$?". Welche Bedeutung hat dieser Begriff?
linux
shell-script
Renjith G
quelle
quelle
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.
quelle
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:Wenn es überhaupt möglich ist (Lesbarkeitsbedenken können manchmal auftreten), sollten Sie diese Situation anders codieren:
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 .quelle
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.quelle
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.quelle
$? 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.
quelle
$?
Bestimmt den Exit-Status des ausgeführten Befehls.$
gefolgt von Zahlen (zB$1
,$2
usw.) die Parameter in dem Shell - Skript darstellt.quelle