10 exemples de boucle Bash For avec explications

For Loop fait partie intégrante de tout langage de programmation. Il permet aux programmes de parcourir un certain nombre d’éléments.

Par exemple, si vous souhaitez parcourir une liste ou un tableau de ‘n’ éléments, vous utiliserez une boucle for. Prenons un exemple simple :

1Violet2Indigo3Bleu4VertTable Arc-en-ciel

Pour effectuer des actions ou pour itérer les éléments du tableau ci-dessus, nous avons besoin d’une boucle For.

Bash pour la boucle

Dans un script bash, la syntaxe de la boucle For est la suivante :

#!/bin/bash

for VAR in 1 2 3 4 5.....N

do

 ACTION 1

 ACTION 2

 .....

done

Bash For Loop est assez simple. La première ligne #!/bin/bash indique que le code est un script bash. VAR représente la variable temporaire utilisée pour le bouclage. N indique le nombre maximal d’itérations. ‘do’ et ‘done’ démarrent et arrêtent la boucle, respectivement. Les actions sont les commandes qui s’exécutent dans la boucle.

Nous pouvons exécuter Bash For Loop avec différentes variables, telles que des listes, des chaînes, des entiers et des tableaux. Cet article montrera quelques exemples courants de la boucle Bash For.

Vous pouvez directement exécuter ces programmes sur la ligne de commande bash ou les enregistrer dans un fichier et exécuter le fichier à l’aide de la commande Bash filename.sh.

Lecture de la liste statique

Considérez la liste suivante – rainbowColorList = Violet, Indigo, Blue, Green, Yellow, Orange, Red

Nous pouvons imprimer la liste de chaînes ci-dessus en utilisant la boucle Bash For comme suit :

#! /bin/sh

# Define the list

rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red

# Comma separator pattern using //,/

for colors in ${rainbowColorList//,/ }

do

   echo $colors

done

La sortie sera la liste des éléments dans une nouvelle ligne.

#Output

Violet
Indigo
Blue
Green
Yellow
Orange
Red

Lire un tableau

La syntaxe pour déclarer un tableau est différente. Utilisez des parenthèses pour chaque élément (String).

rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")

for colors in "${rainbowArray[@]}"; do

     echo "I like $colors"

done

‘@’ est utilisé pour parcourir chaque élément du tableau.

#Output

I like Violet
I like Indigo
I like Blue
I like Green
I like Yellow
I like Orange
I like Red

Nous pouvons également utiliser la boucle For pour imprimer les index et les éléments du tableau.

#Printing with index

rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")

for i in "${!rainbowArray[@]}";

do

  echo "Color at index " $i " : " "${rainbowArray[$i]}"

  i=$((i+1));

done
#Output

Color at index 0 : Violet
Color at index 1 : Indigo
Color at index 2 : Blue
Color at index 3 : Green
Color at index 4 : Yellow
Color at index 5 : Orange
Color at index 6 : Red

Notez que nous utilisons ‘!’ dans la boucle pour obtenir l’index de l’élément.

Itérer une plage de nombres

Nous pouvons utiliser Bash For Loop pour itérer sur une plage de nombres.

#iterating over range of numbers

echo "Countdown begins..."

for N in {10..0}

do

    echo "$N"

done

Le ‘..’ indique une plage de nombres.

#Output

10
9
8
7
6
5
4
3
2
1
0

Nous pouvons également ignorer les nombres de comptage en spécifiant la plage.

Dans l’exemple ci-dessous, nous comptons par sauts par 3.

#iterating with skip counting

echo "Countdown begins..."

for N in {30..0..3}

do

    echo "$N"

done

Le programme ci-dessus commence par 30 comme premier nombre et compte à rebours jusqu’à 0. Le dernier paramètre de la boucle for ‘3’ spécifie le nombre de sauts.

#Output

30
27
24
21
18
15
12
9
6
3
0

Chaînes et caractères

Nous pouvons faire beaucoup d’opérations intéressantes sur les chaînes avec Bash For Loop.

Par exemple, nous pouvons lire chaque caractère d’une chaîne en utilisant l’opérateur ‘seq’ dans une boucle For :

#read characters of a string

myword="welcome"

for i in $(seq 1 ${#myword})

do

 echo "${myword:i-1:1}"

done

Notez que le ‘seq’ doit commencer par 1 pour obtenir le premier caractère en premier.

#Output

W
e
l
c
o
m
e

Nous pouvons également imprimer les chaînes séparées par un espace une par une :

#read each word from a sentence

mysentence="Welcome to toptips.fr. One stop hub for all techies"

for word in $mysentence; do

    echo $word

done
#Output

Welcome 
to 
toptips.fr. 
One 
stop 
hub 
for 
all 
techies

Expressions

Semblable à tout autre langage de programmation comme Java, nous pouvons placer des expressions dans une boucle Bash For.

for (( var=10; var>=0; var-- ))

do 

  echo "Counting down...$var"

done
#Output

Counting down...10
Counting down...9
Counting down...8
Counting down...7
Counting down...6
Counting down...5
Counting down...4
Counting down...3
Counting down...2
Counting down...1
Counting down...0

Lecture des arguments de la ligne de commande

Pour lire à partir des arguments de la ligne de commande, nous utilisons la commande ‘read’. Dans l’exemple ci-dessous, nous obtiendrons quelques chiffres de l’utilisateur et imprimerons la somme à l’aide de Bash For Loop. Nous utilisons la variable total pour stocker le total intermédiaire et final ou la somme des nombres.

read -a array -p "Enter the numbers you want to add:"

total=0

for i in ${array[@]}; do

  let total+=$i

done

echo "Sum of the numbers is: $total"

La sortie est :

#Output

Enter the numbers you want to add: 3 4 66
Sum of the numbers is: 73

Trouver des nombres impairs-pairs

Pour trouver des nombres pairs et impairs entre 1 et 10 (ou n’importe quel nombre N), nous devons utiliser la condition if avec Bash for Loop. Pour déterminer un nombre pair, nous diviserons le nombre par 2 et si le reste est 0, nous le catégoriserons comme pair sinon impair.

#declare the list where the even and odd numbers will be sorted and kept

evennum=""

oddnum=""

for (( i=1; i<=10; i++ ))

do

remainder=$(( $i % 2 ))

if [ $remainder -eq 0 ]; then

 evennum="$evennum $i "

else

 oddnum="$oddnum $i "

fi

done

echo "Even numbers are: "$evennum

echo "Odd numbers are: "$oddnum

Notez que nous donnons la plage à 10 dans l’exemple ci-dessus. Nous pouvons modifier ce nombre pour obtenir des nombres pairs et impairs entre n’importe quelle plage. Vous pouvez également essayer de lire le numéro de l’utilisateur en utilisant la commande « lire » que nous avons apprise dans la section précédente.

#Output

Even numbers are: 2 4 6 8 10
Odd numbers are: 1 3 5 7 9

Boucle infinie

Infinity ou boucle infinie est une boucle qui n’arrête pas de s’exécuter, et le programme doit être forcé à s’arrêter en utilisant Ctrl+C. Nous pouvons facilement créer une boucle infinie en utilisant le ‘; ;’ opérateur à l’intérieur de la boucle for :

for (( ; ; ))

do

  echo "Welcome to toptips.fr"

done
#Output

Welcome to toptips.fr
Welcome to toptips.fr
Welcome to toptips.fr
Welcome to toptips.fr
Welcome to toptips.fr
Welcome to toptips.fr
Welcome to toptips.fr
Welcome to toptips.fr
Welcome to toptips.fr
Welcome to toptips.fr
^C
$

Déclaration de rupture

Les instructions break sont utilisées pour sortir de la boucle lorsqu’une condition « si » est satisfaite.

for color in Violet Indigo Blue Green Yellow Orange Red

do

  if [[ "$color" == 'Green' ]]; then

    break

  fi

  echo "Searching for Green, the color now is $color"

done

echo "I found my color $color"

Dans cet exemple, nous essayons de trouver la couleur verte. La boucle For parcourt chaque couleur, et une fois la couleur verte trouvée, le programme sort de la boucle à cause de l’instruction break.

#Output

Searching for Green, the color now is Violet
Searching for Green, the color now is Indigo
Searching for Green, the color now is Blue
I found my color Green

Continuer la déclaration

Continuer est utilisé pour ignorer la boucle actuelle et passer à la suivante en fonction d’une certaine condition. Par exemple, si vous ne voulez pas imprimer la couleur ‘Vert’ de notre programme précédent, nous pouvons mettre continue, et toutes les autres couleurs sauf le Vert seront affichées.

for color in Violet Indigo Blue Green Yellow Orange Red

do

  if [[ "$color" == 'Green' ]]; then

    continue

  fi

  echo "$color"

done
#Output

Violet
Indigo
Blue
Yellow
Orange
Red

Derniers mots

Nous avons couvert les utilisations les plus courantes d’une boucle Bash For, en utilisant des chaînes, des entiers, des tableaux et des listes. Si vous apprenez Linux mais que vous avez une machine Windows 10, vous pouvez utiliser la fonction WSL et installer Linux sur votre machine Windows.

Vous pouvez ensuite utiliser le terminal Linux de la même manière que CMD.

Ensuite, vous pouvez consulter Comment exécuter des scripts bash à l’aide de Python ?