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