Script Bash – Comment créer et manipuler un tableau ?
Sommaire
- I. Présentation
- II. Bash : comment déclarer et initialiser un tableau ?
- III. Bash : comment lire les valeurs d'un tableau ?
- IV. Bash : comment modifier les valeurs d'un tableau ?
- V. Bash : parcourir un tableau avec une boucle For
- VI. Bash : compter le nombre d'éléments dans un tableau
- VII. Bash : créer un tableau en lecture seule
- VIII. Bash : créer un tableau associatif
- IX. Bash : concaténer deux tableaux
- X. Conclusion
I. Présentation
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.
Dans les différents langages, les tableaux sont très pratiques pour stocker plusieurs valeurs sous un même nom. Donc, nous pouvons en quelque sorte créer des listes de valeurs. Il y a différents types de tableaux en Bash, notamment des tableaux simples où chaque valeur est associée à un numéro d'index, et des tableaux associatifs où il y a des paires de données (association clé / valeur, où la clé est le texte de votre choix).
Version originale de l'article : 23 avril 2013.
II. Bash : comment déclarer et initialiser un tableau ?
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")
Nous allons maintenant voir comment accéder aux éléments d'un tableau et les afficher.
III. Bash : comment lire les valeurs d'un tableau ?
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. Voici comment procéder :
# 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[@]}
L'image ci-dessous montre bien que nous avons pu lire les informations présentes dans notre tableau.
Voyons maintenant comment modifier les éléments d'un tableau.
IV. Bash : comment modifier les valeurs 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é. Voici un exemple pour écraser la valeur présente à l'index 1 du tableau :
# Modification du deuxième élément du tableau
Tableau[1]="WindowsServer"
Ce qui donne :
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.
V. 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 suivant est retourné dans la console :
Comme nous l'espérions, cette méthode nous permet de traiter chaque élément du tableau individuellement.
VI. Bash : 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
VII. Bash : 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.
VIII. Bash : 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 <Nom tableau>=([<nom clé>]="<valeur>" [<nom clé>]="<valeur>" 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 :
Il est toujours intéressant de connaître ce type de tableaux, bien que cette syntaxe soit moins répandue que celle évoquée précédemment.
IX. Bash : 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[@]}
Pour finir, le résultat en image :
X. 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 :
- Tutoriels Bash sous Linux
- IT-Connect - Vidéo d'introduction au Bash
Un exemple d’output aurait été parfait, ainsi que quelques exemples plus fournis aussi 😉
Merci beaucoup pour ce tutoriel qui m’a été d’une grande utilité !
Par contre, il comporte un erreur si je ne dis pas de bêtises !
Pour la lecture simple d’un tableau, vous indiquez ceci : echo $tab[1];
Alors qu’il faudrait écrire echo ${tab[1]}; à la place.
bonjour,
je dois faire un script qui créér un fichier le nom et type de fichier et désigner sur linvité de commande
et apres faire un tableau dans le fichier avec des information donnée dans linvité de commande le probleme est pour inserer mon tableau dans le fichier.
Article plus que nul. Déjà en effet il faut écrire echo ${tab[1]} (et le point-virgule n’est pas nécessaire).
Toutefois peut-être qu’il serait bon d’indiquer comment créer un tableau d’un coup => tab=(« bonjour » « au revoir »), d’indiquer comment obtenir les indices (car sur une plage d’indices, on n’est pas obligé d’avoir systématiquement tous les indices affecté avec une valeur) => echo {!$tab[*]}.
Bref entre cet article et rien, il aurait mieux valu ne rien écrire, ça évitera à tous ceux qui cherchent des informations sur les tableaux en shell de venir perdre leur temps ici. Encore un néophyte qui se croit capable d’enseigner…
Esprit de quelqu’un négatif, ce qui a été partagé il ne s’appelle pas un cours mais juste une introduction de base pour un débutant sur les tableaux, si vous croyez que vous êtes plus intelligent ne liserez pas ses partages mais sachez qu’il est professionnel qui connaît le sens du savoir et le mérite du partage et il ne fait pas de commentaires pour se vanter.
Quand on en arrive à faire plus d’un ou 2 tableaux dans un script Bash c’est qu’il est temps d’installer python…