Les boucles sont l'un des concepts fondamentaux des langages de programmation. Les boucles sont pratiques lorsque vous souhaitez exécuter plusieurs fois une série de commandes jusqu'à ce qu'une condition particulière soit remplie.
Dans les langages de script tels que Bash, les boucles sont utiles pour automatiser les tâches répétitives. Il existe trois constructions de boucle de base dans les scripts Bash, for
boucle, while
boucle, et until
boucle.
Ce tutoriel couvre les bases de while
boucles dans Bash. Nous vous montrerons également comment utiliser le break
et continue
instructions pour modifier le flux d'une boucle.
Bash while
Boucle #
Le while
La boucle est utilisée pour exécuter un ensemble donné de commandes un nombre inconnu de fois tant que la condition donnée est vraie.
Le Bash while
boucle prend la forme suivante :
while [CONDITION]
do
[COMMANDS]
done
Le while
l'instruction commence par le while
mot-clé, suivi de l'expression conditionnelle.
La condition est évaluée avant l'exécution des commandes. Si la condition est vraie, les commandes sont exécutées. Sinon, si la condition est fausse, la boucle est terminée et le contrôle du programme sera passé à la commande qui suit.
Dans l'exemple ci-dessous, à chaque itération, la valeur courante de la variable i
est imprimé et incrémenté de un.
i=0
while [ $i -le 2 ]
do
echo Number: $i
((i++))
done
La boucle Tue itère tant que i
est inférieur ou égal à deux. Il produira la sortie suivante :
Number: 0
Number: 1
Number: 2
Infinite while
Boucle #
Une boucle infinie est une boucle qui se répète indéfiniment et ne se termine jamais. Si la condition est toujours évaluée à vrai, vous obtenez une boucle infinie.
Dans l'exemple suivant, nous utilisons la commande intégrée :
pour créer une boucle infinie. :
renvoie toujours vrai. Vous pouvez également utiliser le true
intégré ou toute autre instruction qui renvoie toujours true.
while :
do
echo "Press <CTRL+C> to exit."
sleep 1
done
Le while
boucle ci-dessus fonctionnera indéfiniment. Vous pouvez terminer la boucle en appuyant sur CTRL+C
.
Voici un équivalent sur une seule ligne :
while :; do echo 'Press <CTRL+C> to exit.'; sleep 1; done
Lire un fichier ligne par ligne #
L'une des utilisations les plus courantes du while
boucle consiste à lire un fichier, un flux de données ou une variable ligne par ligne.
Voici un exemple qui lit le /etc/passwd
fichier ligne par ligne et imprime chaque ligne :
file=/etc/passwd
while read -r line; do
echo $line
done < "$file"
Au lieu de contrôler le while
boucle avec une condition, nous utilisons la redirection d'entrée (< "$file"
) pour passer un fichier au read
commande qui contrôle la boucle. Le while
la boucle s'exécutera jusqu'à ce que la dernière ligne soit lue.
Lors de la lecture du fichier ligne par ligne, utilisez toujours read
avec le -r
option pour empêcher la barre oblique inverse d'agir comme un caractère d'échappement.
Par défaut, le read
La commande supprime les caractères d'espacement de début/fin (espaces et tabulations). Utilisez le IFS=
option avant read
pour éviter ce comportement :
file=/etc/passwd
while IFS= read -r line; do
echo $line
done < "$file"
break
et continue
Relevés #
La break
et continue
Les instructions peuvent être utilisées pour contrôler l'exécution de la boucle while.
break
Relevé #
La break
L'instruction termine la boucle en cours et passe le contrôle du programme à la commande qui suit la boucle terminée. Il est généralement utilisé pour terminer la boucle lorsqu'une certaine condition est remplie.
Dans l'exemple suivant, l'exécution de la boucle sera interrompue dès que la rubrique itérée courante sera égale à 2
.
i=0
while [ $i -lt 5 ]
do
echo "Number: $i"
((i++))
if [[ "$i" == '2' ]]; then
break
fi
done
echo 'All Done!'
Number: 0
Number: 1
All Done!
continue
Relevé #
Le continue
L'instruction quitte l'itération actuelle d'une boucle et passe le contrôle du programme à l'itération suivante de la boucle.
Dans ce qui suit ci-dessous, une fois que l'élément itéré courant est égal à 2
le continue
fera revenir l'exécution au début de la boucle et continuer avec l'itération suivante.
i=0
while [ $i -lt 5 ]
do
((i++))
if [[ "$i" == '2' ]]; then
continue
fi
echo "Number: $i"
done
echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!
Conclusion #
Le while
loop exécute à plusieurs reprises un ensemble donné de commandes tant qu'une condition est vraie.
Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.