Sommaire
Introduction
Avec bash une variable peut être un tableau à une dimension ou une table de hash.
Array
Déclarer un tableau
declare -a array=(A B C D E F)
Taille du tableau
declare -a array=(A B C D E F) echo ${#array[*]} 6
Afficher les éléments du tableau
echo ${array[*]} A B C D E F echo ${array[@]} A B C D E F echo ${array[2]} C echo ${array[-1]} F
Affecter une valeur à un élément d’un tableau
array[2]="Z" echo ${array[*]} A B Z D E F
Effacer un élément d’un tableau
unset array[2] echo ${array[*]} A B D E F
Extraire une “tranche” d’un tableau
array=('A 1' 'B 2' 'C 3' 'D 4' 'E 5' 'F 6') echo ${array[@]} A 1 B 2 C 3 D 4 E 5 F 6 echo ${array[@]:3:2} D 4 E 5
Récupérer la taille d’un élément
echo ${array[@]} A AB ABC ABCD ABCDE echo ${#array[@]} 5 echo ${#array[3]} 4
Ajouter des éléments à la fin d’un tableau
array=(A B C D E F) echo ${array[@]} A B C D E F array=("${array[@]}" G H) echo ${array[@]} A B C D E F G H
Ajouter des éléments au début
array=(A B C D E F) echo ${array[@]} A B C D E F array=("0 1 ${array[@]}") echo ${array[@]} 0 1 A B C D E F
Hash
Déclaration
declare -A hash
Initialisation
hash=(["key1"]="value1" ["key2"]="value2") hash["key3"]="value3" hash["key4"]="value4"
Nombre d’éléments
echo ${#hash[@]} 4
Afficher un élément
echo ${hash["key3"]} value3
Lister les clés ou index
echo ${!hash[*]} key4 key3 key2 key1 echo ${!hash[@]} key4 key3 key2 key1
Afficher les valeurs
echo ${hash[*]} value4 value3 value2 value1 echo ${hash[@]} value4 value3 value2 value1
Supprimer une clé
echo ${hash[*]} value4 value3 value2 value1 unset hash["key4"] echo ${hash[*]} value3 value2 value1
Différence entre hash[*]
et hash[@]
declare -A hash hash=(["key1"]="value1" ["key2"]="value2") hash["key3"]="value3" hash["key 5"]="value 5" for i in "${!hash[*]}"; do echo "//$i//"; done //key 5 key3 key2 key1// for i in "${!hash[@]}"; do echo "//$i//"; done //key 5// //key3// //key2// //key1// for i in "${hash[*]}"; do echo "//$i//"; done //value 5 value3 value2 value1// for i in "${hash[@]}"; do echo "//$i//"; done //value 5// //value3// //value2// //value1//