Parcourir un tableau de nom variable...

2012-03-20 Par sujet David BERCOT
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...

2012-03-20 Par sujet Adrien Martins

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...

2012-03-20 Par sujet David BERCOT
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...

2012-03-20 Par sujet daniel huhardeaux

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...

2012-03-20 Par sujet Timothee CLERC

  
  
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é.