GNU/Linux >> Tutoriels Linux >  >> Linux

Bash Scripting - Tableau indexé expliqué avec des exemples

Tableaux sont un type de structure de données utilisé pour stocker des valeurs d'un certain type. Vous pouvez également considérer le tableau comme une variable, mais une variable ne peut stocker qu'une seule valeur alors qu'un tableau peut stocker plusieurs valeurs en son sein. Le concept de tableau n'est pas seulement lié à bash. Tout langage de programmation avec lequel vous travaillez contiendra des tableaux, mais avec des différences d'implémentation.

Bash prend en charge deux types de tableaux :

  • Tableau indexé
  • Tableau associatif

Les tableaux indexés sont un type de tableau où les éléments (valeurs) sont stockés et attribués avec un nombre entier commençant par 0 à N . Les éléments à l'intérieur du tableau sont référencés à l'aide du numéro d'index. Vous en saurez plus à ce sujet dans le prochain article. L'objectif principal de cet article est uniquement les tableaux indexés.

Comment initialiser un tableau indexé dans Bash

La première étape pour travailler avec le tableau est de le créer. Le terme créer, définir, initialiser un tableau seront utilisés de manière interchangeable, mais pointent vers le même sens :créer le tableau.

Pour créer un tableau, vous devez utiliser des crochets et placer les éléments du tableau (valeurs) à l'intérieur des crochets.

$ arr1=( one 2 three 4 )

Points importants à noter :

  • Les tableaux bash peuvent stocker des éléments d'un type de données différent. Dans certains langages de programmation, vous ne pouvez stocker des valeurs que dans un tableau du même type.
  • Il n'y a aucune limitation sur le nombre d'éléments pouvant être stockés dans le tableau. Cela dépend de la disponibilité de votre mémoire système.

Vous pouvez également utiliser declare commande avec le -a flag pour créer un tableau indexé.

$ declare -a arr1
$ arr1=( one 2 three 4 )

Ou,

$ declare -a arr1=( one 2 three 4 )

Comment ajouter ou afficher des éléments d'un tableau

Vous pouvez soit créer un tableau avec des valeurs comme indiqué dans la section précédente, soit simplement créer un tableau vide et ajouter des valeurs plus tard. Voici comment créer un tableau vide.

$ locations=()

Chaque élément d'un tableau a une valeur d'index associée à partir de 0 à N . Vous devez ajouter de nouveaux éléments à un tableau en utilisant la position d'index.

$ locations[0]="Chennai"
$ locations[1]="Mumbai"

Voici l'illustration graphique de l'ajout d'éléments à un tableau.

Pour afficher les éléments d'un tableau, vous pouvez utiliser l'une des syntaxes suivantes.

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

Pour connaître la différence entre @ et * et son fonctionnement avec un tableau, reportez-vous à la section "Loop over array elements" dans notre Bash For Loop guider.

Si vous essayez de lister les éléments du tableau sans utiliser @ ou * seul le premier élément du tableau sera imprimé.

$ echo ${locations}

Vous pouvez accéder à un élément particulier directement en utilisant sa position d'index.

$ echo ${locations[1]}

Valeur d'index d'un tableau

Dans la section précédente, j'ai montré comment ajouter des éléments dans un tableau en utilisant la position d'index. Lorsque vous ajoutez des tableaux à l'aide de positions d'index, vous pouvez ignorer et ajouter des éléments aux différentes positions d'index.

Les emplacements du tableau ont deux éléments en positions 0 et 1 . Maintenant, je peux ignorer l'index 2 et ajouter aux différentes positions d'index.

$ locations[5]="Delhi"

Dans l'image ci-dessus, vous pouvez voir que j'ai ajouté un nouvel élément au tableau à la position d'index 5.

Si vous souhaitez imprimer les valeurs d'index des éléments, préfixez le tableau avec le "!" symbole comme ci-dessous :

$ echo ${!locations[@]}

Cela n'imprimera que les valeurs d'index au lieu d'imprimer les éléments.

Pour imprimer à la fois l'index et les éléments, utilisez l'extrait de code suivant.

for val in ${!locations[@]}
do
   echo "index = ${val} , value = ${locations[$val]}"
done

Ajouter des valeurs à un tableau

Vous pouvez ajouter de nouveaux éléments à un tableau sans utiliser leurs valeurs d'index et cela ajoutera des éléments au tableau.

locations=( Chennai Mumbai Delhi )
locations+=( Bangalore )
locations+=( Hyderabad )
$ echo ${locations[@]}
$ echo ${!locations[@]}

Trouver la longueur d'un tableau

Vous pouvez obtenir le nombre d'éléments dans un tableau en préfixant le # symbole avant le tableau.

$ echo ${#locations[@]}

Utiliser le même # symbole, vous pouvez également savoir si le tableau est vide ou non.

if [[ ${#locations[@]} -ne 0 ]]; then
    echo "Array is Not empty"
else
    echo "Array is Empty"
fi

Supprimer des éléments d'un tableau

Pour supprimer un élément du tableau, vous pouvez utiliser le unset commande. Jetez un oeil à l'exemple ci-dessous où l'utilisation du unset commande l'élément depuis index(2) est supprimé.

$ echo ${locations[@]}
$ unset locations[2]
$ echo ${locations[@]}

Supprimer un tableau

Pour supprimer le tableau, vous pouvez utiliser le même unset commande.

$ unset locations
$ echo ${locations[@]}

Vider un tableau

Parfois, vous souhaiterez peut-être supprimer tous les éléments du tableau et garder le tableau vide. Dans ce cas, vous pouvez simplement recréer le tableau.

$ echo ${locations[@]}
Chennai Mumbai Delhi Hyderabad Bangalore
$ locations=()
$ echo ${locations[@]}

Stocker la sortie de la commande sous forme de tableau

Vous pouvez exécuter n'importe quelle commande et essayer de stocker la sortie dans un tableau. La commande doit être entourée de crochets pour que la sortie soit stockée sous forme de tableau.

$ path_list=( $(echo $PATH | tr ":" "\n") )
$ echo ${path_list[@]}

Découpage de tableau

Le découpage vous donne la possibilité d'extraire certains éléments du tableau en fonction de leur position d'index.

Voici la syntaxe du découpage :

${locations[@]:index:length}

Si vous souhaitez saisir tous les éléments mais à partir d'une position d'index de départ particulière, vous pouvez le faire de la manière suivante en utilisant l'index seul.

$ echo ${locations[@]:index} # syntax
$ echo ${locations[@]:2}

Dans l'exemple ci-dessus, le tableau sera imprimé à partir de la position d'index 2 et jusqu'au dernier élément. Si vous spécifiez la longueur avec l'index, il utilisera la formule suivante pour découper le tableau.

From index to index+length-1 (inclusive) # Formula
$ echo ${locations[@]:1:3}

Si vous ignorez l'index et ne donnez que la longueur, il sera découpé en utilisant la formule suivante.

From Index 0 to length-1 (inclusive)
$ echo ${locations[@]::4}

Conclusion

Dans cet article, je vous ai présenté le tableau indexé bash . Les tableaux sont très importants lorsque vous commencez à écrire des scripts bash complexes. Ils vous permettent de stocker, de récupérer et de manipuler facilement des données de différents types. Contrairement aux langages de programmation comme Python, il n'existe aucun moyen intégré d'utiliser facilement les tableaux pour effectuer certaines tâches complexes mais toujours réalisables.

Dans notre prochain guide, nous aborderons le tableau associatif en détail.

  • Scripts bash - Tableau associatif expliqué avec des exemples

Lire connexe :

  • Scripts bash :boucle While et Until expliquée à l'aide d'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 créer un tableau d'éléments uniques à partir d'une chaîne/tableau dans Bash ?

  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 associatif 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