Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En Développement Dernière mise à jour : 25 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Dans ce guide sur les tableaux en Bash, vous apprendrez à déclarer et à utiliser des tableaux indexés et associatifs en Bash.

En Bash, vous pouvez créer des tableaux pour stocker une collection d'éléments. Les tableaux Bash sont des collections unidimensionnelles. 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, en Bash, selon le cas d'utilisation, vous pouvez stocker des entiers et des chaînes de caractères dans le même tableau.

Dans ce tutoriel, vous apprendrez à déclarer un tableau Bash et à accéder à ses éléments. Vous apprendrez ensuite à parcourir en boucle les éléments d'un tableau et à ajouter des éléments à un tableau. Enfin, vous découvrirez les tableaux associatifs en Bash.

Commençons !

intéressé(e) par le codage ? Voici les conditions préalables :

Comment déclarer un tableau Bash

Dans cette section, vous apprendrez la syntaxe de déclaration d'un tableau Bash et des exemples de code.

Syntaxe de la déclaration d'un tableau Bash

Vous pouvez déclarer un tableau en Bash en utilisant la syntaxe suivante :

$ arrayName=(elt1 elt2 ... eltN)

# arrayName est le nom du tableau
# elt1 à eltN sont les N éléments du tableau

Dans la syntaxe ci-dessus, nomTableau indique le nom du tableau qui contient N éléments elt1...eltN.

Les éléments d'un tableau sont placés entre les parenthèses ouvrante et fermante (). Notez également que les éléments du tableau sont séparés par un espace. Comme pour toute variable Bash, il ne faire pas y avoir d'espace avant ou après l'opérateur d'affectation =.

📑 Dans la plupart des autres langages de programmation, vous séparez les éléments d'un tableau ou de collections similaires par des virgules. Mais en Bash, c'est l'espace blanc qui sert de séparateur.

En Bash, les tableaux dont les éléments sont identifiés par leur index sont appelés tableaux indexés.

Déclarer des tableaux indexés en Bash

Créons des prix, un tableau de nombres.

$ prix=(24 27 18 30 15)

Comme indiqué dans la syntaxe, les nombres du tableau de prix sont séparés par un espace, entre parenthèses, sans espace avant et après l'opérateur d'affectation =.

En Bash, vous pouvez utiliser la commande echo pour afficher la valeur d'une variable. L'utilisation de $nomVariable permet d'afficher la valeur de NomVariable. Cependant, vous pouvez constater que l'utilisation du nom du tableau n'affiche que 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'indice 1, et ainsi de suite. Vous pouvez également utiliser un index négatif ; l'index 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 $prix<x><x><x><x><x>[1]</x></x></x></x></x>
24<x><x><x><x><x>[1]</x></x></x></x></x>

Pourquoi la sortie est-elle 24[1]? c'est parce que Bash remplace $prices par 24, le premier élément du tableau, et par [1] est imprimé en tant que tel.

Pour imprimer l'élément à un index particulier, vous pouvez utiliser l'expansion de paramètre de la forme ${prix[index]}.

$ echo ${prix<x><x><x><x><x>[1]</x></x></x></x></x>}
# 27
$ echo ${prix<x>[2]</x>}
# 18

Pour afficher tous les éléments du tableau, vous pouvez spécifier @ au lieu d'un indice spécifique.

$ echo ${prix[@]}
24 27 18 30 15

Ensuite, créons un tableau de chaînes de caractères. 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]="cerise"
$ fruits<x><x><x><x><x>[1]</x></x></x></x></x>="baie"
$ fruits<x>[2]</x>="pomme"
$ fruits[3]="poire"
$ fruits[4]="melon"
$ fruits<x>[5]</x>="orange"

Maintenant, pour imprimer tous les éléments du tableau, vous pouvez utiliser ${fruits[@]}.

$ echo ${fruits[@]}
cerise baie pomme poire melon orange

Accéder aux éléments d'un tableau Bash

bash-array-access-elements

Vous pouvez accéder aux éléments du tableau de la manière suivante :

  • Bouclez le tableau et accédez directement à l'élément
  • Bouclez sur l'ensemble des index et accédez aux éléments à un index spécifique

Boucler à travers le tableau et accéder aux éléments

Si vous avez déjà codé en Python, vous avez déjà utilisé la boucle pour à l'aide de la syntaxe suivante :

for elt in some_list :
 print(elt)

Écrivons maintenant l'équivalent Bash de la boucle for ci-dessus.

Nous savons que {prix[@]} s'étend à tous les éléments du tableau des prix. Et ${prix[@]} nous donnons les valeurs de tous les éléments.

La syntaxe de la boucle for de Bash est similaire à celle de la boucle for de Python, mais les instructions dans le corps de la boucle doivent être entourées de do et de done, comme indiqué ci-dessous :

for price in ${prices[@]}
> do
> echo $price
> done

Comme nous utilisons la commande echo et que nous imprimons la valeur de la variable prix, nous obtenons la sortie suivante :

# output
24
27
18
30
15

Accédez aux éléments à l'aide de l'index du tableau

Une autre façon de parcourir les tableaux en boucle consiste à utiliser l'index des éléments. Cette méthode est similaire à la construction de la boucle for en Python, qui utilise la fonction range():

for i in range(len(some_list)) :
 print(i)

Pour obtenir une liste d'index à parcourir en boucle, vous pouvez placer un point d'exclamation (!) devant le nom du tableau dans l'expansion des paramètres. Vous obtiendrez ainsi la liste de tous les index valides pour le tableau, comme indiqué ci-dessous :

$ echo ${!prices[@]}
0 1 2 3 4

Le tableau de prix contient 5 éléments, l'index commence donc à 0 et va jusqu'à 4.

Ensuite, nous pouvons parcourir en boucle la liste des index et accéder à l'élément correspondant à chaque index. Pour l'indice i, ${prix<x>[i]</x> } est l'élément à l'indice i.

for i in ${!prices[@]}
> do
> echo ${prix<x>[i]</x>}
> done

La boucle ci-dessus imprime tous les éléments du tableau.

# output
24
27
18
30
15

ici, après avoir accédé à chaque élément, nous effectuons une opération simple consistant à imprimer sa valeur. En général, nous pouvons effectuer n'importe quel traitement valide sur les éléments.

Ajouter des éléments à un tableau Bash

Guide-to-Bash-Arrays

Dans le tableau de prix, nous avons cinq éléments (aux index 0, 1, 2, 3 et 4). Si vous souhaitez ajouter un élément à la fin du tableau à l'indice 5, vous pouvez le faire comme suit :

$ prices<x>[5]</x>=21

Nous constatons que 21 a été ajouté à la fin du tableau des prix.

$ echo ${prix[@]}
24 27 18 30 15 21

Cependant, il est plus pratique d'ajouter à la fin du tableau - sans se souvenir de l'indice du dernier élément ajouté ou du nombre d'éléments présents dans le tableau.

Vous pouvez utiliser arrayName =(elements(s)) it pour ajouter un ou plusieurs éléments à un tableau, comme indiqué ci-dessous :

$ prix =(10)

Maintenant, si nous imprimons le tableau de prix, nous voyons que 10 a été ajouté à la fin du tableau.

$ echo ${prix[@]}
24 27 18 30 15 21 10

Nous allons maintenant apprendre à déclarer des tableaux associatifs en Bash.

Tableaux associatifs en 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. Notez que nous utilisons l'option -A au lieu de -a.

declare -A fruits_prix

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<x>[berry]</x>=27
$ fruits_prices[apple]=18
$ fruits_prices[pear]=30
$ fruits_prices[melon]=15
$ fruits_prices[orange]=21

Comment accéder aux éléments d'un tableau associatif ?

De la même manière que vous recherchez une valeur à l'aide de la clé correspondante dans un dictionnaire Python, vous pouvez accéder aux valeurs d'un tableau associatif à l'aide des clés.

$ echo ${fruits_prix<x>[berry]</x>}
# 27

Nous constatons que ${fruits_prices[@]} s'étend aux valeurs et que ${!fruits_prices[@]} s'étend aux clés.

$ echo ${fruits_prices[@]}
# Sortie : 18 27 21 24 30 15
$ echo ${!fruits_prix[@]}
# Sortie : pomme baie orange cerise poire melon

Remarque: 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 en boucle le tableau associatif et accéder aux clés, comme indiqué ci-dessous :

for key in ${!fruits_prices[@]}
> do
> echo $key
> done
# Sortie
pomme
baie
orange
cerise
poire
melon

La boucle suivante montre comment vous pouvez accéder aux valeurs.

for value in ${fruits_prices[@]}
> do
> echo $value
> done
# Sortie
18
27
21
24
30
15

Bien qu'il soit recommandé d'utiliser arrayName[key]=value, vous pouvez également le déclarer comme une séquence comme ceci :

declare -A arrayName
arrayName=(clé1 valeur1 clé2 valeur2 ... cléN valeurN)

De cette façon, Bash déduit que le premier élément est la première clé, le deuxième élément est la première valeur, et ainsi de suite.

Récapitulation

J'espère que vous comprendrez maintenant comment créer et utiliser les tableaux de Bash. Voici un bref rappel de ce que vous avez appris.

  • Vous pouvez déclarer un tableau indexé en Bash à l'aide de la syntaxe nom_tableau=(elt1 elt2 elt3 ... eltN) ou lancer declare -a nom_tableau et ajouter des éléments au tableau.
  • Pour accéder aux éléments, vous pouvez les parcourir en boucle en utilisant ${nomdutableau[@]}. Vous pouvez également obtenir la liste de tous les index valides en utilisant l'extension de paramètre ${!nomdutableau[@]}.
  • Enfin, vous avez également appris à déclarer un tableau associatif pour stocker des paires clé-valeur en Bash.

Ensuite, consultez le tutoriel sur les boucles en Bash.

  • Bala Priya C
    Auteur
Merci à nos sponsors
D'autres lectures intéressantes sur le développement
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus