Recherche de site Web

Exemples de boucles Bash While : boucles For, boucles jusqu'à ce que, etc.


La programmation Bash comprend trois types de boucles : la boucle for, la boucle while et la boucle jusqu'à. L'idée de toutes les boucles est d'exécuter du code à plusieurs reprises tant que certains paramètres spécifiques sont respectés.

La boucle Bash for fonctionne différemment des boucles for dans d'autres langages de programmation que vous connaissez peut-être. Avec lui, vous pouvez parcourir une série de « mots » dans une chaîne.

D'un autre côté, la boucle while exécute le code qu'elle contient si l'expression de contrôle (ou simplement la « condition ») est vraie. La boucle arrête d'exécuter le code lorsque la condition devient fausse ou qu'il y a une rupture explicite dans le code.

La boucle jusqu'à est comparable à la boucle while, la seule différence étant que le code continue de s'exécuter tandis que l'expression de contrôle est considérée comme fausse.

Dans cet article, nous expliquons comment utiliser la boucle Bash while avec des exemples.

Comprendre la syntaxe de la boucle While

Jetez un œil à la syntaxe simple de la boucle while :

while [ condition ] 
do
    commands 
done


Le début et la fin d'une boucle while sont définis respectivement par les mots-clés do et done. La condition d'exécution/fin est définie entre crochets au début de la boucle.

Exemples de boucle Bash While

Pour exécuter les exemples ci-dessous, créez un fichier Bash avec l'extension .sh et collez le code à l'intérieur. Vous pouvez ensuite exécuter le code en tapant « bash » suivi du nom du fichier (par exemple, « whileloop.sh ») dans le terminal et en appuyant sur Entrée.

#1 Itérer un nombre fixe de fois

#!/bin/bash

# Initializing a counter variable
counter=1
# Making a while loop 
while [ $counter -le 3 ]do
    # Printing the counter value in every iteration 
    echo “Iteration count: $counter”
    # Incrementing the value 
    (( counter++ ))
Done


La boucle while ci-dessus parcourt le bloc de code trois fois et imprime l'instruction à chaque fois. L'exécution du script générera le résultat suivant :

Iteration count: 1
Iteration count: 2
Iteration count: 3

#2 Utiliser l'instruction « Break »

L'instruction break vous permet de terminer la boucle si une condition spécifique est remplie. Créez un fichier Bash avec le code suivant :

#!/bin/bash

# Initializing a counter variable
counter=1
# Making a loop 
while [ $counter -le 5 ]do
    # Checking the counter value
    if [ $counter == 3 ]    then 
        echo “Ending the loop”       
        break
    fi
    # Printing the counter value
   echo “Iteration number $counter”
    # Incrementing the value
    (( counter++ ))
Done

La boucle while ci-dessus parcourt le code trois fois, mais la valeur du compteur n'est imprimée que deux fois puisque l'instruction break termine la boucle lorsque le compteur atteint la valeur « 3 ». L'exécution du script générera le résultat suivant :

Iteration number 1
Iteration number 2
Ending the loop

#3 Supprimer une étape avec l'instruction Continue

#!/bin/bash

# Initializing the counter
counter=0
# Iterate the loop four times
while [ $counter -le 4 ]do
    # Increment counter value
    (( counter++ ))

      # Check counter value
    if [ $counter == 3 ]    then 
        continue
    fi
    # Printing counter value
    echo ” Iteration number $counter”

done


Le code ci-dessus parcourra la boucle quatre fois, mais lorsque la valeur du compteur atteint trois, la valeur continue ignore le reste du code, revient au début et vérifie la condition.

Le résultat du code est :

Iteration number 1
Iteration number 2
Iteration number 4
Iteration number 5

#4 Lire un fichier

#!/bin/bash

# Checking whether a command-line argument is provided 
if [ $# -gt 0 ]; then 

    # Assigning the filename from the provided value
    filename=$1

    # Reading the file
    while read line; do
        # Printing every line
        echo $line
    done < $filename
else
    # If there is no argument in the command line, printing a message
    echo “No argument provided.”
fi


En supposant que vous collez ce code dans un fichier nommé « ReadingFileWithWhile.sh », l'exécution de la commande « bash ReadingFileWithWhile.bash » renverra « Aucun argument fourni ».

Cependant, si vous exécutez la même commande et lui transmettez un fichier texte, le résultat ressemblera à ceci :

$ bash ReadingFileWithWhile.bash names.txt
Name1
Name2
Name3

#5 Écrire du texte dans un fichier

Le code suivant demandera un nom de fichier à l'utilisateur et y écrira le texte fourni :

#! /bin/bash

echo -n “Enter the name of the file you want to create: “
# Reading the provided name
read filename
# Reading the text entered into the terminal
while read line
do
    echo $line >> $filename
done


Pour terminer la boucle de lecture du contenu, vous devez appuyer sur Ctrl+D.

#6 Créer une boucle infinie

L’écriture d’une boucle infinie peut être une solution adaptée à de nombreux problèmes. Faire une boucle while infinie est aussi simple que de ne pas mentionner de condition de terminaison. Cependant, vous devrez utiliser une instruction exit pour arrêter la boucle si nécessaire.

La boucle suivante sera itérée six fois, et lorsque la valeur deviendra six, l'instruction exit arrêtera la boucle :

#!/bin/bash

# Initialize the counter
counter=1
# Make the infinite loop
while :
do
    printf “Iteration number: $counter\n”
    if [ $counter == 2 ]    then
        echo “level 1”
    elif [ $counter == 4 ]    then
        echo “level 2”
    elif [ $counter == 6 ] 
    then 
        echo “level 3”
        exit 0
    fi  
    # Increment counter
    ((counter++))

done


Le résultat du script ressemble à ceci :

Iteration number: 1
Iteration number: 2
level 1
Iteration number: 3
Iteration number: 4
level 2
Iteration number: 5
Iteration number: 6
level 3

Conclusion

Dans ce guide, nous abordons quelques-unes des différentes manières d'utiliser les boucles while dans Bash. Il existe d'autres façons d'utiliser la boucle while et vous pouvez résoudre de nombreux problèmes différents avec elle.

Maintenant que vous connaissez les principes fondamentaux de la boucle while, vous pouvez l'implémenter dans vos scripts Bash.

Articles connexes: