Maîtrisez les tableaux en Bash : création, manipulation et itération
Créer et manipuler un tableau en Bash
Dans ce tutoriel, nous allons apprendre à créer et à manipuler un tableau dans un script Bash. Nous verrons les bases des tableaux en Bash : comment initialiser un tableau, comment ajouter des éléments à ce tableau, mais aussi comment parcourir un tableau avec une boucle For.
Déclaration et initialisation d’un tableau en Bash
Pour commencer, voyons comment déclarer et initialiser un tableau en Bash. La déclaration d’un tableau s’effectue en précisant les valeurs du tableau entre parenthèses. Ces valeurs sont séparées par un espace.
Le tableau ci-dessous contient 3 valeurs. Chaque valeur est associée à un numéro d’index, en commençant à zéro. Ce qui donne :
Index 0 : “Linux”
Index 1 : “Windows”
Index 2 : “MacOS”
Tableau= (“Linux” “Windows” “MacOS”)
Nous pourrions aussi initialiser le tableau (donc un tableau vide) et venir ajouter les valeurs tour à tour. Ceci pourrait avoir de l’intérêt pour construire un tableau à partir d’une boucle.
# Déclaration d’un tableau vide
Tableau=()
# Ajouter des valeurs au tableau
Tableau+=(“Linux”)
Tableau+=(“Windows”)
Tableau+=(“MacOS”)
Dans ce cas, le tableau sera complété progressivement, index après index. Nous pouvons aussi stocker une valeur dans un index précis. Par exemple pour stocker une valeur dans l’index numéro 6.
Tableau+=([6]=”Android”)
C’est également une possibilité offerte dès la création du tableau :
Tableau=(“Linux” “Windows” “MacOS” [6]=”Android”)
Accéder aux éléments d’un tableau et les afficher
Pour lire les valeurs stockées d’un tableau, nous devons spécifier l’index de l’élément désiré ou afficher l’intégralité du tableau. Pour rappel, en Bash, les indices des tableaux commencent à 0.
# Afficher la valeur à l’index X du tableau
echo ${Tableau[X]}
# Afficher la première valeur du tableau
echo ${Tableau[0]}
# Afficher la deuxième valeur du tableau
echo ${Tableau[1]}
# Afficher la troisième valeur du tableau
echo ${Tableau[2]}
Pour afficher tous les éléments d’un tableau, nous utilisons la syntaxe suivante :
echo ${Tableau[@]}
Modifier les éléments d’un tableau
Notre tableau est accessible en lecture et écriture, donc nous pouvons modifier ses valeurs à notre guise. Pour modifier une valeur, nous devons spécifier le numéro d’index ciblé.
# Modification du deuxième élément du tableau
Tableau[1]=”WindowsServer”
Nous pouvons également supprimer un élément d’un tableau. Soit, nous pouvons remplacer la valeur actuelle par une valeur vide, ou utiliser la commande unset.
# Suppression du deuxième élément du tableau
Tableau[1]=””
# ou
unset Tableau[1]
De la même façon, la commande unset peut être utilisée pour détruire entièrement le tableau :
unset Tableau
Nous allons maintenant voir comment itérer sur les éléments d’un tableau.
Bash : parcourir un tableau avec une boucle For
L’itération sur les éléments d’un tableau est une opération fréquente lorsque l’on code un script Bash. Nous pouvons utiliser une boucle for pour parcourir tous les éléments d’un tableau, ce qui permettra d’appliquer un traitement sur chaque valeur présente dans le tableau. Ceci sera utile pour automatiser des tâches répétitives.
L’exemple ci-dessous sert uniquement à afficher dans la console un texte suivi de la valeur du tableau.
# Parcourir un tableau avec une boucle For
for TableauValeur in ${Tableau[@]}
do
echo “Valeur du tableau : $TableauValeur”
done
Remarque : la variable “TableauValeur” est interne au traitement de la boucle For.
Donc, suite à l’exécution de ce bout de code, le résultat est retourné dans la console.
Compter le nombre d’éléments dans un tableau
Nous pouvons compter le nombre d’éléments afin d’obtenir sa longueur, ou plutôt sa taille si vous préférez. Pour cela, nous devons utiliser “${#Tableau[@]}” en précisant le nom de la variable correspondante à notre tableau à la place de la chaine “Tableau”.
# Déclarer le tableau
Tableau=(“Linux” “Windows” “MacOS”)
# Compter et afficher le nombre d’éléments dans le tableau
echo “${#Tableau[@]}”
Résultat obtenu : 3
Créer un tableau en lecture seule
En Bash, pour déclarer un tableau en lecture seule, c’est-à-dire dont les valeurs peuvent être lues, mais non écrasées et statique (pas possible d’ajouter des valeurs), il est nécessaire d’utiliser la commande declare.
La commande declare sous Linux est utilisée dans les scripts Bash pour définir des variables et des tableaux lorsqu’il est nécessaire de spécifier leurs attributs. C’est notamment le cas pour déclarer un tableau en lecture seule, mais aussi une variable en lecture seule. Donc, nous allons en faire usage dans le cas présent.
La commande ci-dessous sert à créer un tableau nommé “TabRo” (nom de la variable) en lecture seule (option “-r” pour “readonly”) et avec 3 valeurs.
declare -r TabRo=(“Linux” “Windows” “MacOS”)
Si nous essayons de modifier ou d’ajouter une valeur à ce tableau, nous obtenons une erreur, car la variable “TabRo” est en lecture seule. Ce type de tableau est intéressant si vous souhaitez stocker des valeurs et vous assurer qu’elles ne pourront pas être écrasées.
Créer un tableau associatif
Un tableau associatif permet d’utiliser des noms de clés personnalisés à la place des numéros d’index (0, 1, 2, 3, etc…). Nous allons introduire cette notion. La syntaxe est la suivante :
declare -A =([]=”” []=”” etc…)
Nous devons utiliser la commande déclare avec l’option “-A” pour préciser explicitement qu’il s’agit d’un tableau associatif. À l’inverse, si nous utilisons “-a” à la place, nous créons un tableau simple basé sur les index.
Donc, nous pouvons créer un tableau nommé “TableauAsso” avec les clés “Pays”, “Prenom” et “Nom” chacune avec une valeur personnalisée. La déclaration du tableau devra être effectuée de cette façon :
declare -A TableauAsso=([Pays]=”France” [Prenom]=”Florian” [Nom]=”Burnel”)
Nous pouvons consulter les valeurs de ce tableau :
echo ${TableauAsso[@]}
Mais aussi, les clés de ce tableau :
echo ${!TableauAsso[@]}
Pour obtenir la valeur associée à une clé, il suffit de préciser son nom comme nous l’avions fait pour le numéro d’index :
echo ${TableauAsso[Pays]}
Enfin, voici le résultat en image :
Concaténer deux tableaux
Pour finir cet article, nous allons répondre à la problématique suivante : comment concaténer deux tableaux en Bash ? Autrement dit, nous allons fusionner nos deux tableaux pour qu’ils ne fassent qu’un.
Commençons par définir les deux tableaux nommés “Tableau1” et “Tableau2” :
Tableau1=(“T1valeur1” “T1valeur2” “T1valeur3” “T1valeur4”)
Tableau2=(“T2valeur1” “T2valeur2”)
Nous constatons que le premier tableau a 4 valeurs, tandis que le second tableau a 2 valeurs.
Désormais, nous allons concaténer ces deux tableaux dans un nouveau tableau correspondant à la variable “Tableau12” :
Tableau12=(${Tableau1[@]} ${Tableau2[@]})
Si nous affichons le contenu de ce nouveau tableau, nous pouvons voir qu’il contient bien les 6 valeurs !
echo ${Tableau12[@]}
Résultat en image :
Conclusion
Suite à la lecture de ce tutoriel et grâce aux différents exemples, vous devriez être en mesure de mettre en pratique les tableaux dans vos scripts Bash ! Nous avons vu comment déclarer, lire, modifier, supprimer un tableau, mais aussi comment effectuer certaines actions un peu plus complexes.
Pour approfondir le sujet, vous pouvez consulter nos tutoriels Bash en utilisant le lien ci-dessous.
Source : www.it-connect.fr