[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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


Reply to: