Parcourir un tableau de nom variable...
Bonjour, Visiblement, il me manque quelque chose, mais je n'arrive pas à trouver quoi... Je cherche donc à parcourir un tableau dont le nom est fourni au lancement du script. Et là, je n'y arrive pas... Ce serait quelque chose du genre : #!/bin/bash tableau1=(element1 element2 element3) tableau2=(element1 element2 element3) tableau3=(element1 element2 element3) tableau=$1 # Nom du tableau à utiliser for element in ${$tableau[@]} do echo $element done Et là, bien évidemment, ma syntaxe ${$tableau[@]} ne lui plaît pas... Auriez-vous une idée pour résoudre ce problème ? Merci d'avance. David. -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/20120320094822.0c7aad0b@debian-david
Re: Parcourir un tableau de nom variable...
Le 20/03/2012 09:48, David BERCOT a écrit : Bonjour, Visiblement, il me manque quelque chose, mais je n'arrive pas à trouver quoi... Je cherche donc à parcourir un tableau dont le nom est fourni au lancement du script. Et là, je n'y arrive pas... Ce serait quelque chose du genre : #!/bin/bash tableau1=(element1 element2 element3) tableau2=(element1 element2 element3) tableau3=(element1 element2 element3) tableau=$1 # Nom du tableau à utiliser for element in ${$tableau[@]} do echo $element done Et là, bien évidemment, ma syntaxe ${$tableau[@]} ne lui plaît pas... Auriez-vous une idée pour résoudre ce problème ? Merci d'avance. David. Bonjour, Déjà, il ne faut pas mettre de $ dans les accolades. Il faut écrire ${tableau[@]}. Ensuite, tableau est une chaîne de caractère et non pas une référence vers un tableau pré-enregistré. Du coup, ton echo $element va renvoyer ton premier paramètre. Personnellement, j'écrirai le script de cette manière : #!/bin/bash tableau1=(element1 element2 element3) tableau2=(element1 element2 element3) tableau3=(element1 element2 element3) case $1 in tableau1) tableau=${tableau1[@]} ;; tableau2) tableau=${tableau2[@]} ;; tableau3) tableau=${tableau3[@]} ;; esac for element in ${tableau[@]} do echo $element done Adrien -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/4f684adc.4090...@gmail.com
Re: Parcourir un tableau de nom variable...
C'est parfait ! Il me suffit de faire : tableau=$(eval echo \\${$1[@]}\) à la place de tableau=$1 et tout le reste fonctionne... Merci. David. Le Tue, 20 Mar 2012 10:18:04 +0100, Timothee CLERC timothee.cl...@nameshield.net a écrit : Bonjour, Cela pourra peut-être te donner une piste. #!/bin/bash tableau1=(element1 element2 element3) tableau2=(element1 element2 element3) tableau3=(element1 element2 element3) tableau=$1 # Nom du tableau à utiliser echo $(eval echo \\${$tableau[@]}\) bash toto tableau1 element1 element2 element3 Le 20/03/2012 09:48, David BERCOT a écrit : Bonjour, Visiblement, il me manque quelque chose, mais je n'arrive pas à trouver quoi... Je cherche donc à parcourir un tableau dont le nom est fourni au lancement du script. Et là, je n'y arrive pas... Ce serait quelque chose du genre : #!/bin/bash tableau1=(element1 element2 element3) tableau2=(element1 element2 element3) tableau3=(element1 element2 element3) tableau=$1 # Nom du tableau à utiliser for element in ${$tableau[@]} do echo $element done Et là, bien évidemment, ma syntaxe ${$tableau[@]} ne lui plaît pas... Auriez-vous une idée pour résoudre ce problème ? Merci d'avance. David. -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/20120320103317.05a54ca0@debian-david
Re: Parcourir un tableau de nom variable...
Le 20/03/2012 10:16, Adrien Martins a écrit : Le 20/03/2012 09:48, David BERCOT a écrit : Bonjour, Visiblement, il me manque quelque chose, mais je n'arrive pas à trouver quoi... Je cherche donc à parcourir un tableau dont le nom est fourni au lancement du script. Et là, je n'y arrive pas... Ce serait quelque chose du genre : #!/bin/bash tableau1=(element1 element2 element3) tableau2=(element1 element2 element3) tableau3=(element1 element2 element3) tableau=$1 # Nom du tableau à utiliser for element in ${$tableau[@]} do echo $element done Et là, bien évidemment, ma syntaxe ${$tableau[@]} ne lui plaît pas... Auriez-vous une idée pour résoudre ce problème ? Merci d'avance. David. Bonjour, Déjà, il ne faut pas mettre de $ dans les accolades. Il faut écrire ${tableau[@]}. Ensuite, tableau est une chaîne de caractère et non pas une référence vers un tableau pré-enregistré. Du coup, ton echo $element va renvoyer ton premier paramètre. Personnellement, j'écrirai le script de cette manière : #!/bin/bash tableau1=(element1 element2 element3) tableau2=(element1 element2 element3) tableau3=(element1 element2 element3) case $1 in tableau1) tableau=${tableau1[@]} ;; tableau2) tableau=${tableau2[@]} ;; tableau3) tableau=${tableau3[@]} ;; esac for element in ${tableau[@]} do echo $element done Autre solution: #!/bin/bash tableau1() { tableau=(element1 element2 element3) } tableau2() { tableau=(element1 element2 element3) } tableau3() { tableau=(element1 element2 element3) } # Main menu $1 # vaut tableau1 ou tableau2 ou tableau3 for element in ${tableau[@]} do echo $element done -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe vers debian-user-french-requ...@lists.debian.org En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org Archive: http://lists.debian.org/4f684d60.4000...@tootai.net
Re: Parcourir un tableau de nom variable...
Bonjour, Cela pourra peut-être te donner une piste. #!/bin/bash tableau1=(element1 element2 element3) tableau2=(element1 element2 element3) tableau3=(element1 element2 element3) tableau="$1" # Nom du tableau à utiliser echo "$(eval echo \"\${$tableau[@]}\")" bash toto tableau1 element1 element2 element3 Le 20/03/2012 09:48, David BERCOT a écrit : Bonjour, Visiblement, il me manque quelque chose, mais je n'arrive pas à trouver quoi... Je cherche donc à parcourir un tableau dont le nom est fourni au lancement du script. Et là, je n'y arrive pas... Ce serait quelque chose du genre : #!/bin/bash tableau1=(element1 element2 element3) tableau2=(element1 element2 element3) tableau3=(element1 element2 element3) tableau="$1" # Nom du tableau à utiliser for element in "${$tableau[@]}" do echo $element done Et là, bien évidemment, ma syntaxe "${$tableau[@]}" ne lui plaît pas... Auriez-vous une idée pour résoudre ce problème ? Merci d'avance. David. -- Timothée CLERC Administrateur Systèmes et Réseaux Nameshield 27 rue des Arènes 49100 ANGERS +33 2 41 18 28 28 *** Merci d'imprimer ce message que si vous en avez l'utilité.