cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, sciences et coups de gueule…]

Menu

L'usage de la boucle for en bash est souvent mal documentĂ© dans les exemples, ici je vais juste m’attarder sur le cas d’une boucle pour parcourir un tableau.


ඏ

Cas de base

Le cas le plus simple est celui ou l’on souhaite parcourir les Ă©lĂ©ments d’un tableau dans l’ordre et sans autre contrainte.

Exemple directement depuis un terminal

_array_=(a b c) ; for v in "${_array_[@]}" ; do echo "$v" ; done

code qui produira :

a
b
c
  • Exemple dans le contexte d’une fonction bash
    function test1 {
      local -ra _array_=(a b c) # le type de la variable (a = « array »)
                                # variable en lecture seule (r = « read-only »)
    
      for v in "${_array_[@]}" ; do
        echo "$v"
      done
    }
    
    test1
    

    Qui produit le mĂȘme rĂ©sultat que l’affichage prĂ©cĂ©dent.

Pour créer un tableau la syntaxe utiliser les parenthÚses :

montableau=("le soleil" "la lune" "la terre") # Notez l’usage du caractĂšre « " »

Pour adresser (passer en paramùtre par exemple) l’ensemble des valeurs vous devez utiliser la syntaxe ${_array_[@]}:

echo ${montableau[@]}

C’est d’ailleurs ce que l’on fait dans le cas de la boucle ci-dessus, essayez :

montableau=("le soleil" "la lune" "la terre")

for valeur in "${montableau[@]}" ; do echo "${valeur}" ; done

Le suffixe « [@] » permet d’obtenir l’ensemble des Ă©lĂ©ments d’un tableau.


ඏ

Cas nécessitant la position dans le tableau

Si vous avez besoin de la position de l’élĂ©ment dans le tableau, on parlera de l’index de l’élĂ©ment.

Exemple dans le terminal

_array_=(a b c) ; for i in "${!_array_[@]}" ; do echo "$i - ${_array_[$i]}" ; done
0 - a
1 - b
2 - c

Ici on utilise la syntaxe ${!_array_[@]}, vous remarquerez le « ! » au dĂ©but du nom de la variable qui permet d’obtenir la sĂ©quence des indices des Ă©lĂ©ments du tableau.

montableau=("mercure" "vénus" "terre" )

echo "${!montableau[@]}" # retournera les valeurs 0 1 2

montableau+=("mars") # on ajoute une entrée dans le tableau

echo "${!montableau[@]}" # retournera les valeurs 0 1 2 3

Le prĂ©fixe « ! » permet d’obtenir la sĂ©quence des index d’un tableau.

Et on utilise Ă©galement la syntaxe de la forme ${_array_[0]}, oĂč le nombre « 0 » est remplacĂ© par la suite des entiers compris partant de « 0 » et allant jusqu’à « nombre_d_Ă©lĂ©ment - 1 ».

montableau=("mercure" "vénus" "terre" "mars")

echo "!${montableau[@]}" # affichera la valeur 3
echo "${montableau[0]}" # affichera la chaßne « mercure »
echo "${montableau[1]}" # affichera la chaßne « vénus »
echo "${montableau[2]}" # affichera la chaßne « terre »
echo "${montableau[3]}" # affichera la chaßne « mars »

Le suffixe « [n] » permet d’obtenir la valeur de la « n-iĂšme » entrĂ©e du tableau.

Il est possible d’utiliser une variable contenant la valeur de l’index, supposons un tableau « array », une variable « index », on Ă©crira alors :
${_array_[$_index_]} ou ${_array_[${_index_}]}

Par exemple :

mon_tableau=("mercure" "vénus" "terre" "mars")
mon_index=3

echo "${mon_tableau[$mon_index]}"
echo "${mon_tableau[${mon_index}]}"

Petit extra


Il se peut que vous ayez besoin de connaĂźtre le nombre d’élĂ©ment dans le tableau, pour cela, il faut utiliser la syntaxe ${#_array_[@]}

Le prĂ©fixe « # » permet d’obtenir le nombre d’élĂ©ments prĂ©sent un tableau.

montableau=("mercure" "venus" "terre" "mars")

echo "${#montableau[@]}" # affichera la valeur 4

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog