it-swarm.com.de

Was sind die speziellen Dollarzeichen-Shell-Variablen?

In Bash scheint es mehrere Variablen zu geben, die spezielle, gleichbedeutende Werte enthalten. Zum Beispiel,

./myprogram &; echo $!

gibt die PID des Prozesses zurück, der myprogram im Hintergrund ausgeführt hat. Ich kenne andere, wie $?, die meiner Meinung nach das aktuelle TTY sind. Gibt es noch andere

734
Z Douglas
  • $1, $2, $3, ... sind die Positionsparameter .
  • "[email protected]" 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.
  • $$ pid der aktuellen Shell (nicht 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 aktuellste Ausgangsstatus der Vordergrund-Pipeline.
  • $! 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 mgebungsvariablen, die von der Shell gesetzt werden .

Einen umfassenden Index finden Sie im Referenzhandbuch Variablenindex .

1256
kojiro
  • $_ letztes Argument des letzten Befehls
  • $# Anzahl der Argumente, die an das aktuelle Skript übergeben wurden
  • $*/[email protected] Liste der Argumente, die als Zeichenfolge/durch Trennzeichen getrennte Liste an das Skript übergeben werden

von der Spitze meines Kopfes. Google für Bash-Sondervariablen.

46
Dan

Um zu verstehen, was $#, $0 und $1, ..., $n tun, verwende ich dieses Skript:

#!/bin/bash

for ((i=0; i<=$#; i++)); do
  echo "parameter $i --> ${!i}"
done

Wenn Sie es ausführen, wird eine repräsentative Ausgabe zurückgegeben:

$ ./myparams.sh "hello" "how are you" "i am fine"
parameter 0 --> myparams.sh
parameter 1 --> hello
parameter 2 --> how are you
parameter 3 --> i am fine
13
fedorqui

Passen Sie mit einigen Beispielen auf; $ 0 kann einen führenden Pfad sowie den Namen des Programms enthalten. Speichern Sie zB dieses zweizeilige Skript als ./mytry.sh und führen Sie es aus.

#!/bin/bash

echo "parameter 0 --> $0" ; exit 0

Ausgabe:

parameter 0 --> ./mytry.sh

Dies ist eine aktuelle (Jahr 2016) Version von Bash, via Slackware 14.2

4
Adrian Cole