Was ist ein Positionsparameter?

Ein Positionsparameter ist ein in der Befehlszeile angegebenes Argument, mit dem der aktuelle Prozess in einer Shell gestartet wird. Positionsparameterwerte werden in einer speziellen Gruppe von Variablen gespeichert, die von der Shell verwaltet werden.

Variablen, die Positionsparameter speichern

Ein typisches Beispiel für eine Shell, die Positionsparameter verwendet, ist bash. Sie können bash unter Linux, BSD, macOS X und Windows 10 verwenden.

Betrachten Sie den folgenden Bash-Befehl. Der Befehlsname lautet mycommand . Die Befehlszeile hat drei Parameter: einen, zwei und drei vier .

 mein Kommando eins zwei "drei vier" 

Tipp: Positionsparameter werden durch ein Leerzeichen begrenzt. Die Shell interpretiert die Dinge hinter den Leerzeichen als individuelle Parameter. Wenn der Parameter selbst ein Leerzeichen enthält, schließen Sie ihn in Anführungszeichen ein, wie oben unter "drei, vier".

Während mycommand ausgeführt wird, stellt bash ihm die folgenden Shell-Variablen zur Verfügung:

VariablennamenWert
$ 0meinBefehl
1 US-Dollarein
2 $zwei
3 $drei vier
$ #3
[email geschützt]eins zwei drei vier
$ *eins zwei drei vier

Die Variable $ 0 wird auf das erste Wort des Befehls gesetzt - den Befehlsnamen. Diese Variable ist nützlich, da Befehle umbenannt oder mit einem symbolischen Link ausgeführt werden können. Einige Programme verhalten sich je nach Befehlsname, der zum Ausführen des Programms verwendet wird, unterschiedlich. Mit $ 0 kann ein Programm sehen, mit welchem ​​Befehlsnamen es gestartet wurde.

Die Variablen $ 1, $ 2 und $ 3 enthalten die Werte des ersten, zweiten bzw. dritten Parameters. Wenn es einen vierten Parameter gibt, wird dessen Wert in die Variable $ 4 eingetragen . Auf Parameter mit mehr als 9 kann durch Verwendung geschweiften Klammern um die Zahl zugegriffen werden. Zum Beispiel wäre $ {10} der zehnte Parameter und $ {123} der 123. Parameter.

Die Variable $ # enthält die Anzahl der Positionsparameter außer $ 0.

Die Variable [email protected] enthält den Wert aller Positionsparameter außer $ 0.

Die Variable $ * ist identisch mit [email protected], es sei denn, sie ist in doppelte Anführungszeichen gesetzt. In doppelten Anführungszeichen eingeschlossen, erweitert $ * sich auf $ 1c $ 2c $ 3c ..., wobei c das erste Zeichen von $ IFS ist, der internen Feldtrennvariable von bash. Der IFS wird für die Wortaufteilung verwendet und sein Standardwert ist "Leerzeichen, Tabulator oder Zeilenumbruch". Hier sieht Bash das Ende eines Wortes und den Anfang des nächsten.

Wenn der Wert von $ IFS " _ " (Unterstrich) ist, wird "[email protected]" erweitert auf:

 eins zwei drei vier 

Während "$ *" erweitert wird:

 eins zwei drei vier 

Beispiele

Hier einige Beispiele für die Verwendung von Positionsparametern in bash.

Mit dem Befehl set kann der Wert von [email protected] für die aktuelle Shell geändert werden. Alles nach dem Einstellen wird als Positionsparameter registriert.

 Set - eins zwei "drei vier" 

Jetzt können wir diese Variablen mit for ... in durchlaufen:

 für arg in [email protected]; echo "$ arg"; erledigt 
 eins zwei drei vier 

In bash ist [email protected] die Standardliste, die durchlaufen wird, wenn Sie ausführen, daher funktioniert dieser Befehl auch:

 für arg; echo "$ arg"; erledigt 
 eins zwei drei vier 

Das Durchlaufen von "$ *" (mit doppelten Anführungszeichen) liefert eine verkettete Folge von Positionsparametern, die mit dem ersten Zeichen von $ IFS verbunden ist :

 IFS = ", "; für arg in "$ *"; echo "$ arg"; erledigt 
 eins zwei drei vier 

Weitere Informationen finden Sie in der Dokumentation der bash-Befehlsshell.

Parameter, Programmierbegriffe