Scripting BASH: n-ème paramètre de $ @ quand l'index est une variable?
Je veux récupérer le n-ième paramètre de $@ (la liste des paramètres de ligne de commande passés au script), où n est stocké dans une variable.
J'ai essayé ${$n}.
Par exemple, je veux obtenir le 2ème paramètre de ligne de commande d'une invocation:
./my_script.sh alpha beta gamma
Et l'index ne doit pas être explicite, mais stocké dans une variable n.
Source:
n=2
echo ${$n}
J'attendrais la sortie de la version "beta", mais j'obtiens l'erreur:
./my_script.sh: line 2: ${$n}: bad substitution
Ce que je fais mal?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
ok remplacer le "1" avec quelques $n ou quelque chose...
Vous pouvez utiliser variable d'indirection. Il est indépendant de tableaux, et fonctionne très bien dans votre exemple:
Edit: Variable d'Indirection peut être utilisé dans beaucoup de situations. Si il y a une variable
foobar
puis les deux extensions de variable produisent le même résultat:Les ouvrages suivants:
Le portable (non-bash spécifique) la solution est
eval
peut vous aider à accéder à la variable indirectement, ce qui signifie évaluer l'expression deux fois.Vous pouvez le faire comme ceci
eval alph=\$$n; echo $alph