2011-07-07 6 views
1

J'ai un script Bash auquel j'envoie 10 arguments. J'essaye d'accéder au dixième argument, tel que echo $10.Trop d'arguments pour le script Bash?

Au lieu de cela, j'obtiens le premier argument avec un zéro ajouté.

Des pensées sur comment je peux accéder au dixième argument?

+0

Généralement si vous voulez avoir plus de 2-3 arguments, il est bon d'utiliser des options de drapeau au lieu d'utiliser des positions d'arguments fixes pour rendre votre code plus lisible et de ne mémoriser que les drapeaux, pas les positions exactes. de xxx -to yyy -num zzz ...). Il existe quelques bibliothèques Open Source pour cela. La plupart d'entre eux utilisent la commande "shift" de bash pour les parcourir, donc ils n'utilisent généralement pas plus de 3 $ même s'ils ont des douzaines d'arguments. – XzKto

Répondre

10

Utilisez ${10} au lieu de $10. Vous pouvez l'utiliser pour un nombre d'arguments apparemment arbitraires. Je l'ai testé jusqu'à ${100} avec succès.

+1

Essayez ceci pour tester: 'bash -c" echo \ $ {7854} "$ (seq 10 10000)'. – Lynch

+2

Ne cherchez pas la limite: [vous seriez occupé longtemps] (http://stackoverflow.com/questions/4185017/maximum-number-of-bash-arguments-max-num-cp-arguments) – sehe