Comme la plupart des langages de programmation, les scripts bash doivent parfois gérer une liste de valeurs associées. La forme la plus simple est le tableau standard.

En bash, la programmation de tableaux est assez différente, en particulier en ce qui concerne la syntaxe. Les tableaux Bash sont également strictement unidimensionnels, mais ils ont encore de nombreuses utilisations.

La syntaxe de base des tableaux Bash

La création d'un tableau dans bash est simple. Vous pouvez initialiser un tableau entier à l'aide de crochets, par exemple :

city=(Londres Paris Milan "New York")

(Vous pouvez trouver tout le code de cet exemple de ville dans ce GitHub Gist.)

Cela crée un tableau contenant quatre éléments, indexés de 0 à 3. Notez que la quatrième valeur est une chaîne entre guillemets composée de deux mots. Vous devrez citer les valeurs contenant des espaces pour préciser qu'il ne s'agit pas de valeurs distinctes.

Vous pouvez accéder à un seul élément en utilisant la syntaxe entre parenthèses commune à tous les langages de programmation :

ville[2]

Puisqu'il s'agit de bash, vous aurez besoin de quelques améliorations pour utiliser réellement la valeur dans une expression :

  • Vous devrez ajouter le signe dollar ($) au nom de la variable.
  • Vous devrez également utiliser des accolades ({}) pour rendre le nom de la variable sans ambiguïté. Par défaut, bash traitera $ville[2] sous la forme d'une variable nommée ville. Ajoutez des accolades pour indiquer à bash d'évaluer également les parenthèses et le numéro d'index.

La syntaxe standard d'accès au tableau bash est alors :

${nom_variable[index]}

Voici un exemple complet :

#!/bin/bash

city=(Londres Paris Milan "New York")
echo ${ville[3]}

# New York

Au lieu d'initialiser un tableau en une seule fois, vous pouvez l'affecter étape par étape. Ce script est un équivalent plus long de l'exemple précédent :

#!/bin/bash

ville[0]=Londres
ville[1]=Paris
ville[2]=Milan
ville[3]="New York"
echo ${ville[3]}

# New York

Notez que, dans les deux cas, vous devez faire attention à ne pas ajouter d'espace autour du signe égal. "city[0] = London", avec des espaces autour du signe égal, générera une erreur.

Plus d'utilisations pour les tableaux bash

Les tableaux sont parfaits pour stocker des données connexes. Voici un script shell (très limité) pour obtenir la racine carrée d'un nombre :

#!/bin/bash

sqrt[1]=1
sqrt[4]=2
carré[9]=3
sqrt[16]=4
sqrt[25]=5

echo ${sqrt[$1]}

Notez que le script utilise la valeur $1 comme indice de tableau. $1 représente le premier argument de ligne de commande que le script reçoit, vous pouvez donc exécuter ce script comme suit :

$ ./sqrt.sh 9
3

Vous êtes peut-être au courant de la $(cmd) syntaxe pour exécuter une commande et enregistrer sa sortie dans une variable. Vous pouvez combiner cela avec la syntaxe d'initialisation du tableau pour obtenir un tableau de fichiers avec lesquels travailler :

tab=( $(ls) )

Un tableau est souvent une structure de données parfaite pour itérer et Bash ne fait pas exception. Vous pouvez parcourir un tableau pour imprimer chaque élément ou effectuer une opération sur chaque membre.

Vous pouvez adresser un tableau dans un pour.. dans boucle, pour parcourir son contenu. Par exemple, voici une simple boucle qui imprime le nombre de lignes dans chaque fichier du tableau arr:

pour le fichier dans "${arr[@]}"; faire
wc -l "$fichier"
Fini

# 3 variables d'environnement
# 547 httpd.conf
# ...

Notez que ce modèle utilise le @ symbole pour récupérer tous les éléments du tableau.

Plus de syntaxe de tableau bash

Vous pouvez obtenir le nombre d'éléments dans un tableau en utilisant ce qui suit :

echo ${#ville[@]}

# 4

Vous pouvez ajouter un nouvel élément à la fin d'un tableau standard comme ceci :

arr+=(4)

Alors pour ajouter une cinquième ville à la liste :

ville+=(Rome)
echo ${ville[@]}

# Londres Paris Milan New York Rome

Pour extraire un morceau d'un tableau, vous pouvez utiliser une syntaxe qui se rapproche de l'opération slice de nombreux autres langages :

${arr[@]:s: n}

Cette syntaxe renverra une tranche du tableau commençant à la position s et contenant n éléments. Vous pouvez omettre le :n partie pour extraire tous les éléments de s jusqu'à la fin de la liste.

echo ${ville[@]:2:2}
#Milan New York

echo ${ville[@]:3}
# New York Rome

Bash a de nombreuses fonctionnalités, il suffit d'un peu d'apprentissage

Les tableaux dans bash peuvent avoir des limites, mais ils offrent les mêmes fonctionnalités de base que la plupart des langages de programmation. Bien que bash ait toujours pris en charge les tableaux unidimensionnels simples, les temps changent. La dernière version de bash, 4, prend en charge les tableaux associatifs et l'indexation négative des tableaux.

Quelle que soit la version de bash que vous utilisez, il est important de comprendre ses nuances. Même la syntaxe de variable normale a beaucoup d'idiosyncrasies.

Variables Bash expliquées: un guide simple avec des exemples

Lire la suite

PartagerTweeterPartagerE-mail

Rubriques connexes

  • Programmation
  • Linux
  • Programmation
  • Shell bash Linux
  • Script

A propos de l'auteur

Bobby Jack (71 articles publiés)

Bobby est un passionné de technologie qui a travaillé comme développeur de logiciels pendant la majeure partie de deux décennies. Chez MUO, il est rédacteur junior pour la section Programmation. Il est passionné par le jeu, travaillant comme rédacteur en chef au Switch Player Magazine, et est immergé dans tous les aspects de l'édition en ligne et du développement Web.

Plus de Bobby Jack

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner