En ce qui concerne ./script.sh arg1 [arg2 arg3 ...]
, les arguments de ligne de commande arg1
, arg2
... peut être obtenu par $1
, $2
... Mais le nombre d'arguments est pas fixé.
Dans le script shell, je veux passer les arguments à partir arg2
d'un programme,
#/bin/bash
...
/path/to/a/program [I want to pass arg2 arg3 ... to the program]
...
Comment pourrais-je le faire car il pourrait y avoir un ou plusieurs arguments?
$@
?$@
indiquent au shell de citer deux fois chaque paramètre (quelque chose de bien à faire si les paramètres contiennent des caractères intéressants tels que des parenthèses ou des astérisques). Si vous ne vous souciez pas de cela, une plaine$*
fonctionne ...Vous pouvez découper les paramètres positionnels en utilisant l'expansion des paramètres. La syntaxe est:
Si
length
est omis, il est pris jusqu'à la dernière valeur.Comme vous deviez passer de l'avant-dernier argument, vous avez besoin de:
Exemple:
la source