Dans bash>=4, il est possible de déclarer des tableaux classiques ou associatifs, ce qui peut être très pratique dans les boucles.
Tableaux à indices
Déclaration à la main
$ declare -a tableau $ tableau[0]=val1 $ tableau[1]=val2 $ declare -p tableau declare -a tableau='([0]="val1" [1]="val2")'
La même déclaration en une ligne :
$ declare -a tableau='([0]="val1" [1]="val2")' $ declare -p tableau declare -a tableau='([0]="val1" [1]="val2")'
Tableaux associatifs
Si on veut utiliser des chaînes de caractère au lieu des indices, c'est tout à fait possible.
$ declare -A tableau # Attention à ne pas l'oublier ! $ tableau[cle1]=val1 $ tableau[cle2]=val2
Accéder à une valeur
$ echo ${tableau[cle1]}
Compter les clés
$ echo ${#tableau[@]}
Lister les clés
$ echo ${!tableau[@]}
Boucler sur les clés en prévoyant les espaces
$ tableau[cle esp]="val 1" $ for i in "${!tableau[@]}" do echo "Clé : $i; Valeur : ${tableau[$i]}" done
Va retourner
Clé : cle2; Valeur : val2 Clé : cle1; Valeur : val1 Clé : cle esp; Valeur : val 1
Pour aller plus loin, man bash, puis /declare.
Bonus : copier les arguments d'un script shell dans un autre tableau pour les manipuler
arguments=("$@")
- Détails
- Écrit par Thomas Bouffon
- Publication : 19 septembre 2014