Introduction
En programmation, vous devez souvent stocker une liste d’éléments associés, comme des noms de fichiers, des identifiants utilisateur ou des noms de serveurs. Au lieu de créer une variable distincte pour chaque élément, par exemple file1, file2 et file3, vous pouvez utiliser une seule variable appelée tableau.
Un tableau permet de stocker plusieurs valeurs sous un même nom. Vous pouvez le considérer comme une liste dans laquelle vous pouvez ajouter, supprimer et lire des éléments.
Les tableaux deviennent utiles dès qu’une seule variable ne suffit plus. Les listes de serveurs, les noms de fichiers, les noms de paquets et les comptes utilisateur sont autant d’exemples de données qui se présentent naturellement sous forme de groupes plutôt que de valeurs isolées.
Dans cet atelier, vous apprendrez à :
- Déclarer un tableau avec un ensemble initial de valeurs.
- Ajouter de nouveaux éléments à la fin du tableau.
- Afficher tous les éléments du tableau.
- Parcourir le tableau à l’aide d’une boucle afin de traiter chaque élément individuellement.
Déclarer un tableau
Commencez par créer un script contenant une liste de noms.
Les tableaux permettent au shell de traiter des valeurs associées comme un groupe, au lieu de les répartir dans plusieurs variables distinctes. Cette approche est utile chaque fois que votre script doit traiter une collection plutôt qu’un seul élément.
Créez le script array_lab.sh :
cd ~/project
nano array_lab.sh
Saisissez ce code pour initialiser un tableau :
#!/bin/bash
## Define an array named 'names'
names=("Alice" "Bob")
Règles de syntaxe :
- Utilisez des parenthèses
()pour entourer la liste de valeurs. - Utilisez des espaces, et non des virgules, pour séparer les éléments.
("Alice" "Bob")est correct.("Alice", "Bob")est incorrect, car la virgule serait considérée comme faisant partie de la chaîne"Alice,".
Ce dernier point illustre une règle générale du shell : la syntaxe de Bash paraît souvent simple, mais de petites différences de ponctuation peuvent modifier le sens. Les tableaux sont des listes séparées par des espaces, et non des listes séparées par des virgules comme dans certains autres langages.
Enregistrez le fichier avec Ctrl+O, puis quittez avec Ctrl+X.
Vérifiez le contenu du fichier :
cat array_lab.sh
Vous avez correctement défini une variable de type tableau, même si le script n’affiche encore rien.
Ajouter un élément au tableau
Souvent, vous ne connaissez pas tous les éléments de votre liste au moment de commencer. Vous pouvez avoir besoin d’en ajouter au fur et à mesure de l’exécution du script.
Cette situation est fréquente dans les scripts réels. Vous pouvez construire un tableau contenant des fichiers correspondants, des hôtes actifs, des services en échec ou des noms de paquets découverts pendant l’exécution.
Vous pouvez ajouter un nouvel élément à la fin d’un tableau à l’aide de l’opérateur +=.
Ouvrez le script :
nano array_lab.sh
Ajoutez la ligne suivante à la fin du fichier :
## Append 'Charlie' to the list
names+=("Charlie")
Explication :
+=signifie « ajouter à la valeur existante ».("Charlie")place le nouvel élément entre parenthèses afin qu’il soit traité comme un élément du tableau.
Votre fichier doit maintenant se présenter ainsi :
#!/bin/bash
## Define an array named 'names'
names=("Alice" "Bob")
## Append 'Charlie' to the list
names+=("Charlie")
Enregistrez le fichier, puis quittez l’éditeur.
Afficher tous les éléments
Pour vérifier que le tableau contient bien tous les éléments attendus, vous pouvez les afficher en une seule fois.
Dans Bash, l’accès à une variable de type tableau diffère légèrement de l’accès à une variable normale. Utilisez ${array_name[@]} pour développer tous les éléments.
@est un symbole spécial qui représente tous les éléments.
La forme ${...} est un autre exemple d’expansion de paramètre. Bash ne se contente pas d’afficher littéralement le nom de la variable : il développe le tableau en ses éléments stockés avant que echo ne reçoive le texte final.
Ouvrez array_lab.sh :
nano array_lab.sh
Ajoutez la commande d’affichage :
## Print all elements in the array
echo "All Names: ${names[@]}"
Enregistrez le fichier, puis quittez l’éditeur.
Rendez le script exécutable et exécutez-le :
chmod +x array_lab.sh
./array_lab.sh
Résultat :
All Names: Alice Bob Charlie
La syntaxe ${names[@]} a été développée en une liste séparée par des espaces contenant tous les éléments du tableau.
Parcourir le tableau
Afficher toute la liste est utile pour le débogage, mais vous souhaitez généralement traiter chaque élément individuellement. Par exemple, vous pouvez vouloir créer un compte utilisateur pour chaque nom de la liste.
Pour cela, utilisez une boucle for.
Ouvrez array_lab.sh :
nano array_lab.sh
Ajoutez la boucle à la fin du fichier :
echo "--- Processing Names ---"
## Loop through each item in the array
for name in "${names[@]}"; do
echo "Hello, $name"
done
Votre script complet doit maintenant se présenter ainsi :
#!/bin/bash
names=("Alice" "Bob")
names+=("Charlie")
echo "All Names: ${names[@]}"
echo "--- Processing Names ---"
for name in "${names[@]}"; do
echo "Hello, $name"
done
Enregistrez le fichier, puis quittez l’éditeur. Exécutez ensuite le script :
./array_lab.sh
Résultat :
Les guillemets autour de "${names[@]}" sont également importants. Ils préservent chaque élément du tableau en tant qu’élément distinct, ce qui est essentiel lorsque les valeurs contiennent des espaces. Ce détail devient encore plus important dans les scripts utilisés en conditions réelles, car les noms de fichiers et les arguments ne sont pas toujours de simples chaînes composées d’un seul mot.
All Names: Alice Bob Charlie
--- Processing Names ---
Hello, Alice
Hello, Bob
Hello, Charlie
La boucle a pris chaque nom du tableau, l’a affecté à la variable name, puis a exécuté le bloc de code. Il s’agit de la méthode la plus courante pour traiter des listes dans Bash.
Résumé
Dans cet atelier, vous avez appris les bases de l’utilisation des tableaux dans Bash :
- Déclaration (
name=(...)) : créer une liste avec des valeurs initiales. - Ajout (
+=) : ajouter dynamiquement de nouveaux éléments à un tableau existant. - Expansion (
${name[@]}) : récupérer tous les éléments du tableau. - Parcours (
for) : traiter les éléments de la liste un par un.
Les tableaux sont essentiels pour écrire efficacement des scripts capables de gérer plusieurs fichiers, utilisateurs ou données.



