Comprendre les tableaux associatifs dans Linux Bash avec des exemples

Comprendre les tableaux associatifs dans Linux Bash avec des exemples
Les tableaux associatifs sont un type de données abstrait qui peut être considéré comme des dictionnaires ou des cartes. En quoi ils diffèrent des autres tableaux, c'est qu'ils détiennent les paires de valeurs clés où les clés peuvent être des chaînes arbitraires et définies par l'utilisateur au lieu des numéros d'index habituels. Les tableaux associés ont deux propriétés principales:
  • Chaque clé du tableau ne peut apparaître qu'une seule fois. Vous pouvez le considérer comme un identifiant unique pour un utilisateur dans une liste.
  • Une valeur peut apparaître plus d'une fois dans un tableau. Par exemple, deux personnes dans une liste peuvent avoir le même nom mais doivent avoir des ID utilisateur différents.

Dans cet article, nous expliquerons comment vous pouvez déclarer et initialiser les tableaux associatifs dans Linux bash. Nous allons en outre développer la puissance des tableaux associatifs à l'aide de divers exemples.

Nous avons exécuté les exemples mentionnés dans cet article sur un système Debian 10 Buster. Cependant, vous pouvez facilement reproduire sur presque toutes les distros Linux.

Vérification des pré-requis

Pour utiliser des tableaux associatifs sur Linux Bash, votre version GNU bash doit être égale ou supérieure à la version 4. Ouvrez votre terminal Linux en y accédant via la recherche de lanceur d'applications. Entrez ensuite la commande suivante pour vérifier votre version installée de Bash:

$ bash --version

Ma version actuelle de bash est 5.0.3 donc je suis prêt à partir. Dans le cas où votre version bash est inférieure à 4, vous pouvez mettre à niveau Bash en exécutant la commande suivante en tant que sudo:

$ sudo apt-get install - only-mise à niveau bash

Déclarer un tableau associatif et l'initialiser

Déclarer un tableau associatif est assez simple dans Bash et peut être fait via la commande Declare:

$ Declare -Un «Arrayname»

Dans notre exemple, nous déclarerons une variable de tableau nommée Samplearray1 comme suit:

$ Declare -a Samplearray1

L'étape suivante consiste à initialiser les valeurs requises pour votre tableau. Dans notre exemple, nous voulons avoir un tableau où les valeurs sont quelques noms de pays et les clés sont leurs abréviations de nom de pays pertinentes. Ici, nous allons nourrir les valeurs du tableau, une par une comme suit:

$ ArrayName [clé] = valeur

Exemple:

$ Samplearray1 [CHN] = Chine
$ Samplearray1 [JPN] = Japon
$ Samplearray1 [Kor] = Corée
$ Samplearray1 [twn] = Taiwan
$ Samplearray1 [th] = Thaïlande

Une alternative rapide consiste à déclarer et à initialiser un tableau dans une seule commande bash comme suit:

$ Declare -a ArrayName = ([key1] = valeur1 [key2] = valeur2 [key3] = value3… . )

Voici comment nous pouvons déclarer et initialiser notre tableau mentionné, alternativement, comme suit:

$ Declare -a Samplearray1 = ([CHN] = Chine [JPN] = Japon [Kor] = Corée [twn] = Taiwan
[Th] = Thaïlande)

Maintenant, nous présenterons quelques exemples qui expliqueront ce que vous pouvez faire avec les tableaux associatifs en bash:

Exemple1: Accès aux clés et valeurs du tableau

Dans cet exemple, nous expliquerons comment vous pouvez:

  • Imprimez une valeur contre une clé
  • Imprimez toutes les clés du tableau à la fois
  • Imprimez toutes les valeurs du tableau à la fois

Et,

  • Imprimez toutes les paires de valeurs clés à la fois

Imprimer

Tu peux Imprimez une valeur contre une clé En utilisant la syntaxe de commande suivante:

$ echo $ arrayName [keyname]

Voici comment nous pouvons accéder au nom complet d'un pays en fournissant l'abréviation du nom du pays, à partir de notre Samplearray1:

$ echo $ Samplearray1 [chn]
$ echo $ Samplearray1 [twn]

Si tu es interessé par Imprimer toutes les clés de votre tableau associatif, vous pouvez le faire en utilisant la syntaxe suivante:

$ pour la clé dans "$ !ArrayName [@] "; do echo $ key; Done

La commande suivante imprimera toutes les abréviations du nom du pays de mon Samplearray1 par

Utilisation d'une boucle pour une boucle:

$ pour la clé dans "$ !Samplearray1 [@] "; do echo $ key; Done

Une autre alternative à l'impression de toutes les clés du tableau consiste à utiliser l'expansion des paramètres. La commande suivante imprimera toutes les touches dans la même ligne:

$ echo "$ !Samplearray1 [@] "

Si tu es interessé par Imprimer toutes les valeurs du tableau à la fois, Vous pouvez le faire en utilisant la boucle FOR comme suit:

$ pour val dans "$ arrayName [@]"; faire écho $ val; fait

La commande suivante imprimera tous les noms de pays complets stockés dans mon Samplearray1:

$ pour val dans "$ Samplearray1 [@]"; faire écho $ val; fait

Une autre alternative à l'impression de toutes les valeurs du tableau consiste à utiliser l'expansion des paramètres. La commande suivante imprimera toutes les valeurs dans la même ligne:

$ echo "$ Samplearray1 [@]"

Le prochain exemple utile Imprimez toutes les paires de valeurs clés tout de suite en utilisant la boucle FOR comme suit:

$ pour la clé dans "$ !Samplearray1 [@] "; do echo" $ key est une abréviation pour
$ SampleLearray1 [$ key] "; fait

Vous pouvez, bien sûr, rendre cette récupération d'informations plus utile dans vos scripts complexes et significatifs.

Exemple 2: Compter les éléments du tableau

La commande suivante peut être utilisée pour compter et imprimer le nombre d'éléments dans votre tableau associatif:

$ echo "$ # arrayName [@]"

La sortie de la commande suivante montre que j'ai cinq éléments dans mon Samplearray1:

$ echo "$ # Samplearray1 [@]"

Exemple 3: ajout de nouvelles données dans le tableau

Si vous souhaitez ajouter un élément à un tableau après l'avoir déjà déclaré et initialisé, c'est la syntaxe que vous pouvez suivre:

$ ArrayName + = ([clé] = valeur)

Dans mon exemple, je veux ajouter un autre pays avec l'abréviation de son nom de comté, donc j'utiliserai la commande suivante:

$ Samplearray1 + = ([al] = Alabama)

Faire écho aux valeurs du tableau suggère maintenant que le nouveau pays est ajouté à mon tableau:

$ echo "$ Samplearray1 [@]"

Exemple 4: Suppression de l'article du tableau

En décollant une entrée du tableau associatif, vous pouvez le supprimer comme un élément de tableau. Il s'agit de l'utilisation de la syntaxe non définie que vous pouvez utiliser pour le faire:

$ unset ArrayName [Key]

Dans mon exemple, je veux supprimer la paire de valeurs clés «Al-Alabama» de mon tableau afin que je ne se déclenche pas la clé «Al» dans ma commande:

$ unset Samplearray1 [Al]

Faire écho aux valeurs du tableau suggère maintenant que la valeur clé de l'Alabama est désormais supprimée de mon tableau:

$ echo "$ Samplearray1 [@]"

Exemple 5: Vérification si un élément existe dans le tableau

En utilisant la condition IF de la manière suivante, vous pouvez vérifier si un article est disponible dans votre tableau associatif ou maintenant:

$ if [$ arrayName [searchKey] + _]; Puis écho "existe"; else echo "non disponible"; Fi

Par exemple, si je vérifie si l'article Al-Alabama récemment supprimé existe dans mon tableau, le message suivant sera imprimé:

$ if [$ Samplearray1 [al] + _]; Puis écho "existe"; else echo "non disponible"; Fi

Si je vérifie un élément qui existe, le résultat suivant sera imprimé:

$ if [$ Samplearray1 [jpn] + _]; Puis écho "existe"; else echo "non disponible"; Fi

Exemple 6: Suppression d'un tableau

Vous pouvez supprimer un tableau associatif de votre mémoire bash en utilisant la commande unset comme suit:

$ unset ArrayName

En utilisant la commande simple suivante, je supprimerai mon Samplearray1 de la mémoire:

$ unset Samplearray1

Maintenant, quand j'essaie d'imprimer toutes les valeurs du tableau via la commande suivante, je n'en reçois pas.

$ echo "$ Samplearray1 [@]"

En utilisant ces exemples dans vos scripts Linux Bash, vous pouvez utiliser la puissance des tableaux associatifs pour obtenir une solution à de nombreux problèmes complexes.