In Bash scheint es mehrere Variablen zu geben, die spezielle Werte mit konsistenter Bedeutung enthalten. Zum Beispiel,
./myprogram &; echo $!
gibt die PID des Prozesses zurück, der im Hintergrund ausgeführt wurde myprogram
. Ich kenne andere, von $?
denen ich denke, dass sie das aktuelle TTY sind. Gibt es noch andere
bash
environment-variables
dollar-sign
Z Douglas
quelle
quelle
$'\n'
ist ein wörtliches Zeilenumbruchzeichen, das sich aus dem Ersetzen des Digraphen\n
durch ASCII 10${1}
sind${*}
, um usw. zu suchen , dienen die Zahnspangen nur der Begriffsklärung und sind häufig überflüssig. Für sich genommen${x}
ist das genau gleichbedeutend mit$x
.$!
das Ich bin mir dessen bewusst,!$
aber nicht.Antworten:
$1
,$2
,$3
, ... sind die Positionsparameter ."$@"
ist ein Array-ähnliches Konstrukt aller Positionsparameter{$1, $2, $3 ...}
."$*"
ist die IFS-Erweiterung aller Positionsparameter$1 $2 $3 ...
.$#
ist die Anzahl der Positionsparameter.$-
Aktuelle Optionen für die Shell festgelegt.$$
pid der aktuellen Shell (keine Subshell).$_
letzter Parameter (oder der abs-Pfad des Befehls zum Starten der aktuellen Shell unmittelbar nach dem Start).$IFS
ist das (Eingabe-) Feldtrennzeichen.$?
ist der letzte Status beim Beenden der Vordergrundpipeline.$!
ist die PID des letzten Hintergrundbefehls.$0
ist der Name der Shell oder des Shell-Skripts.Die meisten der oben genannten Informationen finden Sie unter Spezielle Parameter im Bash-Referenzhandbuch. Es gibt alle von der Shell festgelegten Umgebungsvariablen .
Einen umfassenden Index finden Sie im Referenzhandbuch Variablenindex .
quelle
bash
Manpage dokumentiert . Die einzige Kuriosität ist, dass sie$_
nur im Zusammenhang mit ihrer Verwendung in derMAILPATH
Variablen erwähnt wird.man(1) bash
unter Spezielle Parameter nach dem Rest der Definition von$_
.!$
statt$_
in Bash-Skripten, weil letztere manchmal fehlschlagen.!$
und$_
.$_
letztes Argument des letzten Befehls$#
Anzahl der an das aktuelle Skript übergebenen Argumente$*
/$@
Liste der Argumente, die als Zeichenfolge / begrenzte Liste an das Skript übergeben wurdenvon oben auf meinen Kopf. Google für Bash spezielle Variablen.
quelle
$@
ist die Zeichenfolge und$*
die begrenzte Liste (gemäß der oben akzeptierten Antwort jedenfalls)."$@"
sich zu einer Liste,"$*"
erweitert sich zu einer einzelnen Zeichenfolge. Das besondere Verhalten von$@
gilt, wenn es in doppelten Anführungszeichen steht.Um zu verstehen, was zu tun
$#
ist$0
und$1
...,$n
verwende ich dieses Skript:Wenn Sie es ausführen, wird eine repräsentative Ausgabe zurückgegeben:
quelle
Achten Sie auf einige Beispiele. $ 0 kann einen führenden Pfad sowie den Namen des Programms enthalten. Speichern Sie dieses zweizeilige Skript beispielsweise als ./mytry.sh und führen Sie es aus.
Ausgabe:
Dies ist eine aktuelle (Jahr 2016) Version von Bash über Slackware 14.2
quelle