GNU/Linux >> Tutoriels Linux >  >> Linux

Bash Scripting - Tableau associatif expliqué avec des exemples

Ceci est le deuxième article dans le cadre des tableaux bash. Dans l'article précédent, nous avons expliqué comment utiliser les tableaux indexés dans Bash . Dans ce guide, nous discuterons de Bash Associative Array en détail avec des exemples sous Linux.

Les tableaux associatifs fonctionnent sur la base de paires clé-valeur. Dans certaines langues, il est également appelé dictionnaires ou cartes de hachage . La principale différence entre les tableaux indexés et associatifs est que les tableaux indexés fonctionnent en fonction de la valeur d'index et que chaque élément du tableau est mappé à une position d'index particulière du tableau. Un tableau associatif utilise une "clé" pour mapper la valeur au lieu des positions d'index.

Plongeons-nous et voyons comment utiliser le tableau associatif dans bash.

Initialiser le tableau associatif

Contrairement à un tableau indexé, vous ne pouvez pas initialiser un tableau associatif sans utiliser declare commande.

Utilisez le declare commande avec -A drapeau.

$ declare -A STAR_PLAYERS=()

Maintenant un tableau vide nommé "STAR_PLAYERS" est créé. Si vous le souhaitez, vous pouvez également ajouter des éléments au tableau directement lors de l'initialisation.

$ declare -A STAR_PLAYERS=( [Argentina]="Messi" [Brazil]="Neymar" [England]="Kane" )

Dans le code ci-dessus, les clés sont entre crochets et les valeurs doivent être suivies du signe égal à sans espaces. Il n'est pas nécessaire d'utiliser une virgule ou un point-virgule comme séparateur entre les éléments.

Pour une meilleure lisibilité, vous pouvez écrire les éléments du tableau sur plusieurs lignes.

$ declare -A STAR_PLAYERS=(
 [Argentina]="Messi"
 [Brazil]="Neymar"
 [England]="Rooney"
)

Afficher les éléments du tableau

Vous devez utiliser le echo ou printf commande dans bash pour imprimer le contenu du tableau. Similaire à la façon dont nous avons utilisé la variable spéciale * et @ pour imprimer le tableau indexé, la même chose doit également être utilisée pour imprimer les tableaux associatifs.

$ echo ${STAR_PLAYERS[@]}
$ echo ${STAR_PLAYERS[*]}

Il y a une différence significative entre * et @ et connaître la différence entre * et @ et comment cela fonctionne avec le tableau, reportez-vous à la section "Loop over array elements" dans notre Bash For Loop guider.

Si vous essayez d'imprimer les éléments du tableau sans utiliser * ou @ , la sortie sera vide.

$ echo ${STAR_PLAYERS}

De plus, si vous regardez la sortie ci-dessus, seules les valeurs sont imprimées et non les clés. Les valeurs que vous imprimez ne seront pas ordonnées. Vous pouvez saisir la valeur d'un élément particulier à l'aide de sa clé.

$ echo ${STAR_PLAYERS[Brazil]}

Ajouter de nouveaux éléments au tableau

L'ajout d'un nouvel élément au tableau est simple. Tout ce que vous avez à faire est de créer une nouvelle paire clé-valeur comme indiqué ci-dessous.

$ STAR_PLAYERS[Belgium]="Hazard"
$ echo ${STAR_PLAYERS[@]}

Si vous essayez d'utiliser la même clé qui est déjà présente dans le tableau, la valeur sera remplacée par la nouvelle.

$ STAR_PLAYERS[England]="Sterling"
$ echo ${STAR_PLAYERS[@]}

Ajouter de nouveaux éléments au tableau

Vous pouvez également ajouter des éléments à un tableau en utilisant la syntaxe suivante.

$ STAR_PLAYERS+=([Spain]="Ramos")
$ echo ${STAR_PLAYERS[@]}

Imprimer la paire clé et valeur

D'après les exemples précédents, vous avez peut-être compris que seules les valeurs sont imprimées. Vous pouvez obtenir la liste des clés seules en préfixant le "!" symbole avec le tableau.

$ echo ${!STAR_PLAYERS[@]}

Si vous souhaitez imprimer à la fois la clé et la valeur en même temps, vous pouvez utiliser la boucle for loop .

for elem in "${!STAR_PLAYERS[@]}"
do
 echo "key : ${elem}" -- "value: ${STAR_PLAYERS[${elem}]}"
done

Longueur du tableau associatif

Vous pouvez obtenir la longueur du tableau associatif, c'est-à-dire le nombre total d'éléments présents dans le tableau en préfixant "#" symbole avec le tableau. Ceci est également courant pour les tableaux indexés.

$ echo ${#STAR_PLAYERS[@]}

Vérifier si l'élément est présent dans le tableau

Parfois, avant d'effectuer tout traitement avec l'élément particulier, vous souhaiterez peut-être vérifier si l'élément est déjà présent dans le tableau. Il existe de nombreuses façons de le faire, mais ci-dessous est le moyen le plus simple.

J'utilise l'instruction conditionnelle avec le -n drapeau qui vérifiera si la longueur de la chaîne renvoyée par ${STAR_PLAYERS[Argentina]} est non nul. Il développe la clé donnée et la valeur est en fait vérifiée par rapport au -n drapeau.

if [[ -n "${STAR_PLAYERS[Argentina]}" ]] 
then
  echo "Element is present"
else
  echo "Element not present"
fi

Tableau associatif en lecture seule

Vous pouvez rendre un tableau associatif en lecture seule. Dans un état en lecture seule, une fois le tableau initialisé, vous ne pouvez pas ajouter de nouveaux éléments au tableau ni modifier les valeurs du tableau. Avec le declare commande, vous devez utiliser le -r drapeau.

$ declare -r -A STAR_PLAYERS=(
 [Argentina]="Messi"
 [Brazil]="Neymar"
 [England]="Rooney"
)
$ STAR_PLAYERS[Spain]="Ramos"
$ STAR_PLAYERS[England]="Sterling"
$ echo ${STAR_PLAYERS[@]}

Supprimer des éléments

Si vous souhaitez supprimer un élément particulier du tableau, vous pouvez utiliser le unset commande avec le nom de la clé de l'élément. Par exemple, si je souhaite supprimer l'élément (Spain="Ramos" ), la syntaxe doit être la suivante.

$ unset STAR_PLAYERS[Spain]

Vider un tableau

Vous pouvez également supprimer tous les éléments du tableau et le rendre vide en réinitialisant le tableau comme indiqué ci-dessous.

$ echo ${STAR_PLAYERS[@]}
$ declare -A STAR_PLAYERS=()

Supprimer le tableau

Si vous souhaitez supprimer le tableau, vous pouvez utiliser le nom du tableau sans aucune clé.

$ unset STAR_PLAYERS

Conclusion

Dans cet article, nous avons vu ce qu'est un tableau associatif dans bash et certaines de ses fonctionnalités. L'inconvénient avec bash est que vous devez soit écrire une logique manuellement, soit utiliser des outils externes pour obtenir le résultat souhaité. Par exemple, lorsque je dois convertir un tableau associatif en objets json, je dois utiliser jq outil qui n'est pas intégré à bash. C'est là que vous devriez essayer d'utiliser Python qui offre des méthodes faciles à utiliser lorsque vous devez travailler avec des tableaux et d'autres structures de données.

Lire connexe :

  • Scripts bash :boucle While et Until expliquée à l'aide d'exemples
  • Scripts bash – Explication de la boucle For avec des exemples
  • Scripts bash – Fonctions expliquées à l'aide d'exemples
  • Scripts bash – Variables expliquées à l'aide d'exemples
  • La redirection bash expliquée avec des exemples
  • La commande Bash Echo expliquée avec des exemples sous Linux
  • Tutoriel Bash Heredoc pour les débutants

Linux
  1. Comment écrire un script bash avec des exemples

  2. Tableaux bash avec exemples

  3. Instruction Bash If-Else avec des exemples

  4. Les tableaux AWK expliqués avec 5 exemples pratiques

  5. Le tutoriel Ultimate Bash Array avec 15 exemples

Bash Scripting - Commande Printf expliquée avec des exemples

Bash Scripting - Tableau indexé expliqué avec des exemples

Commande Tr sous Linux expliquée avec des exemples

Bash Scripting Part2 - Boucles For et While avec exemples

Tutoriel d'introduction aux scripts Bash avec 5 exemples pratiques

Script bash pour la boucle expliqué avec des exemples