Dans ce guide sur les tableaux Bash, vous apprendrez à déclarer et à utiliser des tableaux indexés et associatifs dans Bash.
Dans Bash, vous pouvez créer des tableaux pour stocker une collection d'éléments. Les tableaux bash sont unidimensionnel collectes. Dans les langages de programmation tels que C et C++, les tableaux sont des collections d'éléments du même type de données. Cependant, dans Bash, selon le cas d'utilisation, vous pouvez stocker des entiers et des chaînes dans le même tableau.
Dans ce didacticiel, vous apprendrez à déclarer un tableau Bash et à accéder à ses éléments. Vous apprendrez ensuite à parcourir les éléments d'un tableau et à ajouter des éléments à un tableau. Enfin, vous découvrirez les tableaux associatifs dans Bash.
Commençons!
(I.e. Intéressé à coder avec vous ? Voici les prérequis :
- Si vous êtes sur un Mac ou une machine Linux, vous pouvez ouvrir votre terminal et coder.
- Si vous êtes sur une machine Windows, veuillez installer Git bash au sein de l’ Sous-système Windows pour Linux (WSL2).
How to Declare a Bash Array
Dans cette section, vous apprendrez la syntaxe pour déclarer un tableau Bash et des exemples de code.
Syntaxe de la déclaration de tableau bash
Vous pouvez déclarer un tableau dans Bash en utilisant la syntaxe suivante :
$ arrayName=(elt1 elt2 ... eltN)
# arrayName is the name of the array
# elt1 through eltN are the N elements in the array
Dans la syntaxe ci-dessus, arrayName
désigne le nom du tableau qui contient N
éléments elt1...eltN
.
Les éléments d'un tableau sont placés entre les parenthèses ouvrantes et fermantes ()
. Notez également que les éléments du tableau sont séparés par un whitespace. Comme pour toute variable Bash, il devrait y avoir aucune espace avant ou après l'opérateur d'affectation =
.
📑 Dans la plupart des autres langages de programmation, vous séparerez les éléments d'un tableau ou de collections similaires par des virgules. Mais dans Bash, l'espace blanc est le séparateur.
Dans Bash, de tels tableaux dans lesquels les éléments sont identifiés par leur index sont appelés tableau indexé.
Déclarer des tableaux indexés dans Bash
Créons prices
, un tableau de nombres.
$ prices=(24 27 18 30 15)
Comme mentionné dans la syntaxe, les nombres dans le
prices
tableau sont séparés par un espace blanc, entre parenthèses, sans espaces avant et après l'opérateur d'affectation =.
Dans Bash, vous pouvez utiliser le echo
commande pour afficher la valeur d'une variable. En utilisant $variableName
imprime la valeur de variableName
. Cependant, vous pouvez voir que l'utilisation du nom du tableau imprime uniquement le premier élément.
$ echo $prices
24
Les tableaux bash suivent l'indexation zéro. Ainsi, le premier élément est à l'indice 0, le deuxième élément est à l'indice 1, et ainsi de suite. Vous pouvez également utiliser l'indexation négative ; l'indice du dernier élément du tableau est -1.
Que se passe-t-il si vous essayez d'accéder à l'élément à un index particulier et de l'imprimer ? Essayons d'imprimer l'élément à l'index 1.
$ echo $prices[1]
24[1]
Pourquoi la sortie est-elle 24[1] ? 🤔 C'est parce que Bash remplace $prices
avec 24, le premier élément du tableau et [1] est imprimé en tant que tel.
Pour imprimer l'élément à un index particulier, vous pouvez utiliser le paramètre expansion du formulaire ${prices[index]}
.
$ echo ${prices[1]}
# 27
$ echo ${prices[2]}
# 18
Pour imprimer tous les éléments du tableau, vous pouvez spécifier @
au lieu d'un index spécifique.
$ echo ${prices[@]}
24 27 18 30 15
Ensuite, créons un tableau de chaînes. L'exécution de la commande suivante crée un tableau indexé :
$ declare -a fruits
L'option -a
crée un tableau indexé. Vous pouvez maintenant remplir le tableau, un élément à la fois, en déclarant l'élément à un index spécifique, comme indiqué ci-dessous :
$ fruits[0]="cherry"
$ fruits[1]="berry"
$ fruits[2]="apple"
$ fruits[3]="pear"
$ fruits[4]="melon"
$ fruits[5]="orange"
Maintenant, pour imprimer tous les éléments du tableau, vous pouvez utiliser ${fruits[@]}
.
$ echo ${fruits[@]}
cherry berry apple pear melon orange
Access the Elements of a Bash Array

Vous pouvez accéder aux éléments du tableau des manières suivantes :
- Parcourez le tableau et accédez directement à l'élément
- Boucle à travers l'ensemble des index et des éléments d'accès à un index spécifique
Boucle à travers le tableau et les éléments d'accès
Si vous avez codé en Python, vous aurez utilisé le pour la boucle en utilisant la syntaxe suivante :
for elt in some_list:
print(elt)
Écrivons maintenant l'équivalent Bash de la boucle for ci-dessus.
Nous savons que {prices[@]}
s'étend à tous les éléments du prices
déployer. Et ${prices[@]}
nous donne les valeurs de tous les éléments.
La boucle for de Bash est similaire à la syntaxe de la boucle for de Python, mais les instructions du corps de la boucle doivent être incluses dans do
et done
, comme montré:
$ for price in ${prices[@]}
> do
> echo $price
> done
Parce que nous utilisons la commande echo et affichons la valeur de la variable price
, nous obtenons la sortie suivante :
# output
24
27
18
30
15
Accéder aux éléments à l'aide de l'index du tableau
Une autre façon de parcourir les tableaux consiste à utiliser l'index des éléments. Ceci est similaire à la construction de boucle for en Python qui utilise le range()
fonction:
for i in range(len(some_list)):
print(i)
Pour obtenir une liste d'index à parcourir, vous pouvez placer un point d'exclamation (!
) avant le nom du tableau dans le développement du paramètre. Cela vous donnera la liste des tous index valides pour le tableau, comme indiqué :
$ echo ${!prices[@]}
0 1 2 3 4
La prices
array contient 5 éléments, donc l'index commence à 0 et monte jusqu'à 4.
Ensuite, nous pouvons parcourir la liste des index et accéder à l'élément à chaque index. Pour l'indice i
, ${prices[i]}
est l'élément à l'indice i
.
$ for i in ${!prices[@]}
> do
> echo ${prices[i]}
> done
La boucle ci-dessus affiche tous les éléments du tableau.
# output
24
27
18
30
15
💬 Ici, après avoir accédé à chaque élément, nous effectuons une simple opération d'impression de sa valeur. En général, nous pouvons avoir n'importe quel traitement valide sur les éléments.
Append Elements to a Bash Array

Dans le prices
tableau, nous avons cinq éléments (aux indices 0,1,2,3 et 4). Si vous souhaitez ajouter un élément à la fin du tableau à l'index 5, vous pouvez le faire comme suit :
$ prices[5]=21
Nous voyons que 21 a été ajouté à la fin du tableau des prix.
$ echo ${prices[@]}
24 27 18 30 15 21
Cependant, il est plus pratique d'ajouter à la fin du tableau, sans s'en souvenir, l'index du dernier élément ajouté ou le nombre d'éléments actuellement dans le tableau.
Vous pouvez utiliser arrayName+=(elements(s))
pour ajouter un ou plusieurs éléments à un tableau, comme indiqué :
$ prices+=(10)
Maintenant, si nous imprimons le prices
tableau, nous voyons que 10 a été ajouté à la fin du tableau.
$ echo ${prices[@]}
24 27 18 30 15 21 10
Ensuite, apprenons à déclarer des tableaux associatifs dans Bash.
Associative Arrays in Bash
Si vous souhaitez définir une relation en termes de paires clé-valeur, vous pouvez utiliser un tableau associatif. Vous pouvez déclarer un tableau associatif en utilisant la syntaxe générale suivante. Remarquez que nous utilisons le -A
option au lieu de -a
.
$ declare -A fruits_prices
Vous pouvez ajouter des éléments au tableau associatif en spécifiant la clé et la valeur correspondante. Ici, nous avons ajouté les noms des fruits comme clés et les nombres du tableau des prix comme valeurs.
$ fruits_prices[cherry]=24
$ fruits_prices[berry]=27
$ fruits_prices[apple]=18
$ fruits_prices[pear]=30
$ fruits_prices[melon]=15
$ fruits_prices[orange]=21
Alors, comment accéder aux éléments d'un tableau associatif ?
De la même manière que vous recherchez la valeur à l'aide de la clé correspondante dans un dictionnaire Python, vous pouvez accéder aux valeurs dans un tableau associatif à l'aide des clés.
$ echo ${fruits_prices[berry]}
# 27
On voit ça ${fruits_prices[@]}
s'étend aux valeurs et ${!fruits_prices[@]}
s'étend aux touches.
$ echo ${fruits_prices[@]}
# Output: 18 27 21 24 30 15
$ echo ${!fruits_prices[@]}
# Output: apple berry orange cherry pear melon
Notes: L'ordre des éléments n'est pas le même que l'ordre dans lequel nous les avons ajoutés. En effet, contrairement aux tableaux indexés, les tableaux associatifs ne sont pas des collections ordonnées. Ils travaillent plutôt sur l'association entre les clés et les valeurs. Par conséquent, les clés sont aux tableaux associatifs ce que les index sont aux tableaux indexés.
Vous pouvez également parcourir le tableau associatif et accéder aux clés, comme indiqué :
$ for key in ${!fruits_prices[@]}
> do
> echo $key
> done
# Output
apple
berry
orange
cherry
pear
melon
La boucle suivante montre comment vous pouvez accéder aux valeurs.
$ for value in ${fruits_prices[@]}
> do
> echo $value
> done
# Output
18
27
21
24
30
15
Bien qu'il soit recommandé d'utiliser arrayName[key]=value
, vous pouvez également le déclarer sous la forme d'une séquence comme celle-ci :
declare -A arrayName
arrayName=(key1 value1 key2 value2 ... keyN valueN)
De cette façon, Bash déduit le premier élément comme première clé, le deuxième élément comme première valeur, et ainsi de suite.
résumer
J'espère que vous comprenez maintenant comment créer et travailler avec des tableaux Bash. Voici un bref aperçu de ce que vous avez appris.
- Vous pouvez déclarer un tableau indexé dans Bash en utilisant la syntaxe
arrayName=(elt1 elt2 elt3 ... eltN)
ou courirdeclare -a arrayName
et ajouter des éléments au tableau. - Pour accéder aux éléments, vous pouvez effectuer une boucle à l'aide de
${arrayName[@]}
. Alternativement, vous pouvez obtenir la liste de tous les index valides en utilisant l'extension de paramètre${!arrayName[@]}
. - Enfin, vous avez également appris à déclarer un tableau associatif pour stocker des paires clé-valeur dans Bash.
Ensuite, consultez le tutoriel pour les boucles dans Bash.
-
Bala Priya est un développeur et rédacteur technique indien avec plus de trois ans d'expérience dans le domaine de la rédaction de contenu technique. Elle partage son apprentissage avec la communauté des développeurs en créant des didacticiels techniques, des guides pratiques, etc. lire la suite