Welches sind (Bash-) Shell-Spezialparameter?

10

Ich habe einen speziellen Parameter gefunden, bei dem bash mit $sign beginnt . Beispiel: Wenn ich für Exit - Status wandernde war wusste ich $?, Prozess - ID von $$ usw.

Also, ich bin teilen diesen Beitrag zu wissen , welche spezielle bash sind (Shell) Parameter und deren Nutzung.

Pandya
quelle

Antworten:

17

Siehe 3.4.2 Spezielle Parameter aus dem Bash-Referenzhandbuch.

Spezielle Parameter:

  • $ *

    ($ *) Erweitert ab eins auf die Positionsparameter. Wenn sich die Erweiterung nicht in doppelten Anführungszeichen befindet, wird jeder Positionsparameter zu einem separaten Wort erweitert. In Kontexten, in denen es ausgeführt wird, unterliegen diese Wörter einer weiteren Wortaufteilung und Erweiterung des Pfadnamens. Wenn die Erweiterung in doppelten Anführungszeichen erfolgt, wird sie zu einem einzelnen Wort erweitert, wobei der Wert jedes Parameters durch das erste Zeichen der IFS-Spezialvariablen getrennt ist. Das heißt, "$ *" entspricht "$ 1c $ 2c ...", wobei c das erste Zeichen des Werts der IFS-Variablen ist. Wenn IFS nicht gesetzt ist, werden die Parameter durch Leerzeichen getrennt. Wenn IFS null ist, werden die Parameter ohne dazwischenliegende Trennzeichen verbunden.

  • $ @

    ($ @) Erweitert ab eins auf die Positionsparameter. Wenn die Erweiterung in doppelten Anführungszeichen erfolgt, wird jeder Parameter zu einem separaten Wort erweitert. Das heißt, "$ @" entspricht "$ 1" "$ 2"…. Wenn die Erweiterung in doppelten Anführungszeichen innerhalb eines Wortes auftritt, wird die Erweiterung des ersten Parameters mit dem Anfangsteil des ursprünglichen Wortes und die Erweiterung des letzten Parameters mit dem letzten Teil des ursprünglichen Wortes verbunden. Wenn keine Positionsparameter vorhanden sind, werden "$ @" und $ @ zu nichts erweitert (dh sie werden entfernt).

  • $ #

    ($ #) Wird auf die Anzahl der Positionsparameter in Dezimalzahl erweitert.

  • $?

    ($?) Wird zum Exit-Status der zuletzt ausgeführten Vordergrund-Pipeline erweitert.

  • $ -

    ($ -, ein Bindestrich.) Wird auf die aktuellen Optionsflags erweitert, die beim Aufruf durch den Befehl set builtin oder durch die Shell selbst festgelegt wurden (z. B. die Option -i).

  • $$

    ($$) Wird auf die Prozess-ID der Shell erweitert. In einer () Subshell wird die Prozess-ID der aufrufenden Shell und nicht die Subshell erweitert.

  • $!

    ($!) Erweitert sich auf die Prozess-ID des Jobs, der zuletzt in den Hintergrund gestellt wurde, unabhängig davon, ob er als asynchroner Befehl oder mit dem integrierten bg ausgeführt wird (siehe Job Control Builtins ).

  • $ 0

    ($ 0) Wird auf den Namen der Shell oder des Shell-Skripts erweitert. Dies wird bei der Shell-Initialisierung festgelegt. Wenn Bash mit einer Befehlsdatei aufgerufen wird (siehe Shell-Skripte ), wird $ 0 auf den Namen dieser Datei gesetzt. Wenn Bash mit der Option -c gestartet wird (siehe Aufrufen von Bash ), wird $ 0 auf das erste Argument nach der auszuführenden Zeichenfolge gesetzt, sofern eines vorhanden ist. Andernfalls wird der Dateiname festgelegt, der zum Aufrufen von Bash verwendet wird, wie durch das Argument Null angegeben.

  • $ _

    ($ _, ein Unterstrich.) Setzen Sie beim Start der Shell den absoluten Pfadnamen, der zum Aufrufen der Shell oder des Shell-Skripts verwendet wird, die bzw. das in der Umgebungs- oder Argumentliste übergeben wird. Erweitert anschließend nach der Erweiterung zum letzten Argument des vorherigen Befehls. Stellen Sie außerdem den vollständigen Pfadnamen ein, der zum Aufrufen jedes ausgeführten und in die in diesen Befehl exportierte Umgebung platzierten Befehls verwendet wird. Beim Überprüfen von E-Mails enthält dieser Parameter den Namen der E-Mail-Datei.


Dies kann auch von der Manpage von bash gedruckt werden:

$ man bash | awk '/Special Parameters$/','/Shell Variables$/'

Ich hoffe, dies hilft allen (einschließlich neuen Benutzern) dabei, Informationen / Kenntnisse über spezielle Parameter in der (Bash-) Shell zu erhalten

Pandya
quelle
Hinweis: Dieser Beitrag erfordert eine Formatierungskorrektur
Pandya
@jlliagre danke für die Implementierung der Korrektur.
Pandya
Gern geschehen, das war seltsam, weil die Vorschau nicht mit dem endgültigen Rendering übereinstimmte.
Jlliagre
2

gemäß der Bash-Scripting-Anleitung .

Prozess-ID (PID) des Skripts selbst . Die Variable $$ wird häufig in Skripten verwendet, um "eindeutige" temporäre Dateinamen zu erstellen. Wenn Sie echo $$ein Skript ausführen , sehen Sie, dass sich die Ausgabe von der PID der aktuellen Shell unterscheidet.

amir jj
quelle