Was ./script.sh arg1 [arg2 arg3 ...]
, die Befehlszeilenargumente arg1
, arg2
kann ... bekommen werden durch $1
, $2
... Aber die Anzahl der Argumente ist nicht festgelegt.
Im Shell-Skript möchte ich die Argumente beginnend mit arg2
an ein Programm übergeben,
#/bin/bash
...
/path/to/a/program [I want to pass arg2 arg3 ... to the program]
...
Wie könnte ich das machen, da es ein oder mehrere Argumente geben könnte?
$@
?$@
weisen die Shell an, jeden Parameter in Anführungszeichen zu setzen (was zu tun ist, wenn die Parameter interessante Zeichen wie Klammern oder Sternchen enthalten). Wenn Sie sich nicht darum kümmern,$*
funktioniert eine Ebene ...Sie können die Positionsparameter mit Hilfe der Parametererweiterung aufteilen. Die Syntax lautet:
Wenn
length
weggelassen, wird der Wert bis zum letzten Wert übernommen.Da Sie vom zweiten bis zum letzten Argument übergehen sollten, benötigen Sie:
Beispiel:
quelle