Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
In Développement Dernière mise à jour : 24 août 2023
Partager sur:
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

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 :

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

éléments d'accès au tableau bash

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

Guide des tableaux bash

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 courir declare -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 C
    Auteur
    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
Merci à nos commanditaires
Plus de bonnes lectures sur le développement
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise 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, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.
    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder