123 votes

Comment gérer plus de 10 paramètres dans un shell

J'utilise le shell bash sous linux et je veux utiliser plus de 10 paramètres dans le shell script.

8 votes

Notez que le fait d'avoir 10 paramètres rendra la situation assez confuse. Il serait peut-être préférable d'utiliser des options (par ex. -a 1 o --foo=bar ) à la place. Voir man getopt , man getopts y man bash pour connaître les possibilités qui s'offrent à vous.

198voto

Dennis Williamson Points 105818

Utilisez des accolades pour les séparer :

echo "${10}"

Vous pouvez également itérer sur les paramètres positionnels comme ceci :

for arg

ou

for arg in "$@"

ou

while (( $# > 0 ))    # or [ $# -gt 0 ]
do
    echo "$1"
    shift
done

3 votes

Notez que ${10} fonctionnera dans bash, mais limitera votre portabilité puisque de nombreuses implémentations de sh ne permettent que des spécifications à un seul chiffre.

1 votes

@William : Il y a quelques shells qui ne l'acceptent pas, comme le shell Bourne original, mais en plus des shells que j'ai listés dans un autre commentaire (Bash, dash, ksh et zsh), il fonctionne aussi dans csh, tcsh et Busybox ash.

2 votes

@WilliamPursell ${10} est défini par POSIX

31voto

lukuluku Points 1884

Vous pouvez avoir jusqu'à 256 paramètres de 0 à 255 avec :

${255}

5 votes

Je pense que cette limite dépend de la coquille. Bash, dash, ksh et zsh ne semblent pas l'avoir. sh -c 'echo ${333}' /usr/bin/*

3 votes

Ma coquille passe confortablement à 2 millions set $(seq 2097152); echo ${2097152}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X