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 [email protected]
En cas de soucis, contactez EN ANGLAIS [email protected]
Archive: http://lists.debian.org/[email protected]