Que sont les dictionnaires Bash sur Linux et comment les utilisez-vous ?

0
152
fatmawati achmad zaenuri/Shutterstock.com

Les dictionnaires Bash vous donnent des cartes de hachage et des tableaux associatifs dans les scripts shell Linux. Nous vous montrerons comment utiliser ces structures de données puissantes et utiles dans vos propres scripts shell Linux.

A Rose by Any Other Nom

CONNEXEQu'est-ce que le shell Bash et pourquoi est-il si important pour Linux ? Le nom formel des dictionnaires est tableau associatif. Ils sont également appelés tables de hachage et cartes de hachage. Il s'agit d'une structure de données qui fonctionne de la même manière qu'un tableau classique, mais avec une différence significative.

Un tableau est un ensemble de valeurs de données contenues dans une structure de données. Pour accéder à l'une des valeurs de données, appelées éléments de tableau, vous devez connaître leur position dans le tableau. La position d'un élément de tableau dans le tableau est connue sous le nom d'index, donc ces types de tableaux sont appelés tableaux indexés. Ce sont les types de tableaux les plus couramment utilisés.

Cependant, ils présentent un inconvénient. Comment accéder à un élément de tableau si vous ne connaissez pas sa position dans la liste ? Vous devez parcourir tous les éléments du tableau, en testant pour voir si la valeur à cet emplacement est celle que vous recherchez.

Les tableaux associatifs surmontent ce problème. Ils n'utilisent pas d'entiers pour identifier de manière unique les éléments du tableau. Ils utilisent des mots uniques appelés mots-clés. Vous pouvez récupérer la valeur d'un élément de tableau en utilisant son mot-clé, quel que soit son emplacement dans le tableau. Avec un tableau indexé, les nombres entiers représentant les positions dans le tableau sont dans l'ordre croissant. Les mots-clés dans un tableau associatif peuvent être dans n'importe quel ordre.

Vous pouvez rechercher une valeur dans un tableau associatif en effectuant une recherche avec son mot-clé. Rechercher un mot et récupérer sa valeur associée imite la recherche d'un mot dans un dictionnaire et la recherche de sa signification. C'est pourquoi les tableaux associatifs sont appelés dictionnaires.

Bash 4.0 ou supérieur

Les tableaux associatifs sont pris en charge dans le shell Bash version 4.0 ou supérieure. Si vous utilisez une distribution Linux actuelle, tout devrait bien se passer. Pour vérifier votre version de Bash, utilisez cette commande :

bash –version

Publicité

La machine utilisée pour rechercher cet article a Bash 5.1.4 installé, nous sommes donc prêts à partir.

Principes de base

Pour créer un tableau associatif sur la ligne de commande du terminal ou dans un script, nous utilisons la commande Bash declare. L'option -A (associatif) indique à Bash qu'il s'agira d'un tableau associatif et non d'un tableau indexé.

declare -A acronymes

Cela crée un tableau associatif appelé “acronymes.”

Pour mettre des données dans notre tableau, nous devons fournir des mots-clés et des valeurs. Nous pouvons le faire en utilisant ce format :

array-name[key]=Valeur

Ajoutons quelques éléments du tableau :

acronyms[ACK]=Acknowledgement acronyms[BGP]=”Border Gateway Protocol” acronymes[CIDR]=”Classless Inter-Domain Routing” acronymes[DHCP]=”Dynamic Host Configuration Protocol” acronymes[EOF]=”End of Frame”

Ces commandes définissent cinq éléments de tableau. Notez que les valeurs sont entourées de guillemets s'il y a des espaces dans la valeur. Nos mots-clés ont été saisis par ordre alphabétique, mais ils peuvent être saisis dans l'ordre de votre choix. Les mots-clés doivent être uniques. Si vous essayez de créer deux entrées avec le même mot-clé, la deuxième valeur que vous entrez écrasera la première. Vous n'aurez toujours qu'une seule entrée avec ce mot-clé, et elle sera associée à la deuxième valeur que vous avez ajoutée.

Pour récupérer les valeurs du tableau, nous utilisons des commandes dans ce format :

${array-name[key]} Advertisement

Nous pouvons utiliser echo pour envoyer la sortie à la fenêtre du terminal :

echo ${acronyms[ACK]} echo ${acronyms[DHCP]}

Utiliser des boucles

Les tableaux se prêtent très bien à être utilisés dans des boucles. Les tableaux associatifs ne font pas exception. Les boucles fournissent des moyens efficaces d'invoquer une séquence d'actions sans sections de code répétitives. Avant d'examiner les boucles, il existe un moyen efficace de déclarer des tableaux.

Nous créons les tableaux à l'aide de la commande declare (la même option -A qu'auparavant), mais nous fournissons les mots-clés et les valeurs sous forme de liste sur la ligne de commande.

declare -A country=( [ALB]=Albanie [BHR]=Bahreïn [CMR]=Cameroun [DNK]=Danemark [EGY]=Egypte )

Le nom du tableau est “pays,” et il est connecté à la liste de valeurs par un signe égal ” =.” La liste de valeurs est entourée de parenthèses “()” et chaque mot-clé est placé entre crochets “[]“. Notez qu'il n'y a pas de virgules séparant les valeurs. Si vous avez une chaîne de valeur contenant des espaces, vous devrez la placer entre guillemets.

Pour qu'un tableau associatif renvoie un mot-clé au lieu de la valeur, ajoutez un point d'exclamation “!” devant le nom du tableau. Le symbole at “@” peut être utilisé comme caractère générique, ce qui signifie tous les éléments du tableau.

Cette boucle for listera tous les mots-clés :

for key in “${!countries[@]}” ; faire echo $key; done

Notez que les mots-clés ne sont pas nécessairement répertoriés dans l'ordre dans lequel ils ont été créés, mais que n'a pas d'importance. Les tableaux associatifs ne reposent pas sur un index ordonné.

Publicité

Nous pouvons également utiliser l'expansion des paramètres pour répertorier tous les mots-clés. Ils seront listés sur une ligne, pas un par ligne.

echo “${!countries[@]}” echo “${!acronyms[@]}”

Nous pouvons augmenter notre boucle for pour imprimer les mots-clés et les valeurs en même temps.

for key in “${!acronyms[ @]}” ; do echo “$key – ${acronyms[$key]}” ; fait

Si nous voulons savoir combien d'éléments il y a dans les tableaux, nous pouvons utiliser un hachage “#” devant le nom du tableau au lieu d'un point d'exclamation.

echo “${!countries[@]}” echo “${!acronyms[@]}”

Vérifier qu'un élément de tableau existe

Si vous recherchez un mot-clé mais qu'il y a aucun élément de tableau de ce type, la valeur de retour sera une chaîne vide. Parfois, il est utile d'avoir un indicateur différent pour la présence ou l'absence d'un élément de tableau.

Nous pouvons vérifier la présence d'un élément de tableau en utilisant le “+_” opérateur. Notez que cela vient après le mot-clé, pas devant le nom du tableau comme les opérateurs précédents que nous avons vus.

if [ ${acronyms[EOF]+_} ]; puis echo “Trouvé” ; else echo “Non trouvé” ; fi if [ ${acronymes[FTP]+_} ] ; puis echo “Trouvé” ; else echo “Non trouvé” ; fi

L'élément de tableau avec le mot-clé “EOF” se trouve dans le tableau, mais l'élément du tableau avec le mot-clé “FTP” n'est pas.

Ajout d'éléments de tableau

Ajouter de nouveaux éléments à un tableau associatif est facile. Contrairement à certains langages de programmation, vous n'avez pas besoin de définir la taille de votre tableau lorsque vous le déclarez. Vous pouvez continuer à ajouter de nouveaux éléments sans atteindre une limite supérieure prédéfinie.

Publicité

Pour ajouter un nouvel élément au tableau, nous utilisons le “+=” opérateur.

pays+=( [FJI]=Fidji ) echo “$(#countries[@]}” echo ${countries[FJI]}

< /p>

Le nombre d'éléments dans le tableau est désormais de six, et la recherche du nouveau mot-clé trouve l'élément du tableau et renvoie sa valeur.

Suppression d'éléments de tableau et de tableaux

La commande unset est utilisée pour supprimer des éléments de tableau. Si le mot-clé contient des espaces, placez-le entre guillemets.

unset acronymes[EOF] if [ ${acronyms[EOF]+_} ] ; puis echo “Trouvé” ; else echo “Non trouvé” ; fi

Pour supprimer l'ensemble du tableau, utilisez unset avec le nom du tableau.

pays non définis

Utilisation de variables avec des tableaux

L'utilisation de variables avec des tableaux associatifs est simple. Dans cet exemple, nous allons définir une clé de variable sur la chaîne “EOF.” Nous utiliserons la variable lorsque nous ajouterons un nouvel élément de tableau au tableau. En fait, nous remplaçons l'élément du tableau que nous avons supprimé précédemment.

Nous allons récupérer le nouvel élément du tableau en l'appelant avec le mot-clé new et aussi, en utilisant la variable. Si le mot-clé contient des espaces, vous devrez placer le nom de la variable entre guillemets.

key=EOF acronymes[$key]=”End of Frame” echo ${acronyms[EOF]} echo ${ acronymes[$key]}

Soyez créatif

Nos exemples ont été collections d'informations où chaque élément du tableau est indépendant de tous les autres, un peu comme un dictionnaire. Chacun est une définition unique. Mais les tableaux associatifs peuvent tout aussi bien contenir une variété d'informations toutes liées à une seule chose, telles que les spécifications de différentes pièces de matériel informatique :

declare -A spécification spécification[CPU]=”Dual Core AMD Ryzen 5 3600″ spécification[Speed]=”3600 MHz” spécification[Kernel]=”5.11.0-17-generic x86_64″ spécification[Mem]=”1978.5 MiB” spécification[Storage]=”32 Gio” spécification[Shell]=”Bash” echo ${specification[CPU]}

Écrire efficacement dans une langue signifie connaître les mécanismes et les structures qu'elle offre, et sélectionner celle qui convient le mieux au problème que vous essayez de résoudre. Les tableaux associatifs vous offrent un moyen facile à utiliser de stocker des données que vous pouvez rechercher par nom, tout comme un dictionnaire.

LIRE LA SUITE

  • › Android’s “Material You” Le thème est génial, mais ne vous attendez pas à ce que Samsung l'utilise
  • › Comment créer une vue temporaire lors de la collaboration dans Excel
  • › Comment vérifier la version de .NET Framework sur Windows 10
  • › Qu'est-ce que la profondeur de couleur ?
  • › Comment contrôler tous vos appareils domestiques intelligents dans une seule application