Unix / Linux - Contrôle des boucles en Shell
Bonjour, aspirants programmeurs ! Aujourd'hui, nous allons plonger dans le monde passionnant du contrôle des boucles dans les scripts Shell de Unix et Linux. En tant que votre professeur d'informatique du coin, je suis là pour vous guider dans ce voyage, étape par étape. Ne vous inquiétez pas si vous êtes nouveau dans la programmation - nous allons commencer par les bases et progresser pas à pas. Alors, prenez une tasse de café (ou de thé, si c'est votre truc), et mettons-nous aux boucles !
Comprendre les boucles
Avant de sauter dans le contrôle des boucles, récapitulons rapidement ce qu'elles sont. Imaginez que vous êtes chargé d'écrire "J'aime la programmation" sur un tableau noir 100 fois. Au lieu d'écrire manuellement cette phrase 100 fois, vous pourriez utiliser une boucle pour automatiser cette tâche répétitive. C'est exactement ce que font les boucles en programmation - elles nous permettent d'exécuter un ensemble de commandes plusieurs fois sans avoir à les réécrire à chaque fois.
La boucle infinie
Maintenant, parlons de quelque chose à la fois fascinant et potentiellement dangereux : la boucle infinie. C'est comme une toupie qui ne s'arrête jamais - elle continue et continue.
Qu'est-ce qu'une boucle infinie ?
Une boucle infinie est une boucle qui continue de s'exécuter indéfiniment parce que sa condition de terminaison n'est jamais rencontrée. Bien que cela puisse sembler une recette pour le désastre, il y a en réalité des scénarios où les boucles infinies sont utiles (nous y viendrons plus tard).
Exemple de boucle infinie
Voici un exemple simple de boucle infinie en scripting Shell :
#!/bin/bash
while true
do
echo "This is an infinite loop!"
sleep 1
done
Dans ce script :
-
while true
crée une condition toujours vraie, donc la boucle ne s'arrête jamais. -
echo
affiche notre message. -
sleep 1
met le script en pause pendant 1 seconde avant l'itération suivante.
Si vous exécutez ce script, vous verrez "This is an infinite loop!" affiché toutes les secondes jusqu'à ce que vous arrêtiez le script manuellement (généralement en appuyant sur Ctrl+C).
Quand pourrions-nous utiliser des boucles infinies ?
Croyez-le ou non, les boucles infinies ne sont pas toujours mauvaises ! Elles peuvent être utiles dans des scénarios comme :
- Créer un programme qui doit s'exécuter en continu (comme un serveur).
- Implémenter un système de menu où l'utilisateur peut choisir des options à plusieurs reprises.
- Surveiller des systèmes pour des événements ou des conditions spécifiques.
N'oubliez pas, avec grand pouvoir vient grande responsabilité. Assurez-vous toujours d'avoir un moyen de sortir de vos boucles infinies lorsque c'est nécessaire !
L'instruction break
Maintenant que nous avons vu comment les boucles peuvent durer éternellement, apprenons comment les arrêter lorsque nous le voulons. Voici l'instruction break
- votre issue de secours de toute boucle.
Qu'est-ce que fait break ?
L'instruction break
fait exactement ce qu'elle dit - elle "sort" de la boucle actuelle, indépendamment de ce que dit la condition de la boucle.
Exemple d'utilisation de break
Modifions notre boucle infinie précédente pour qu'elle s'arrête après 5 itérations :
#!/bin/bash
count=0
while true
do
echo "Loop iteration: $count"
count=$((count + 1))
if [ $count -eq 5 ]
then
echo "Breaking the loop!"
break
fi
sleep 1
done
echo "Loop has ended."
Dans ce script :
- Nous initialisons une variable
count
pour suivre les itérations. - Chaque itération, nous incrémentons
count
et vérifions si elle est égale à 5. - Si
count
est 5, nous affichons un message et utilisonsbreak
pour sortir de la boucle.
Lorsque vous exécutez ce script, vous verrez qu'il compte jusqu'à 5 puis s'arrête.
L'instruction continue
Alors que break
nous permet de sortir entirely d'une boucle, parfois nous voulons simplement sauter le reste de l'itération actuelle et passer à la suivante. C'est là que rentre en jeu l'instruction continue
.
Qu'est-ce que fait continue ?
L'instruction continue
saute le reste de l'itération actuelle de la boucle et passe à l'itération suivante.
Exemple d'utilisation de continue
Créons un script qui affiche les nombres de 1 à 10, mais saute les nombres pairs :
#!/bin/bash
for i in {1..10}
do
if [ $((i % 2)) -eq 0 ]
then
continue
fi
echo $i
done
Dans ce script :
- Nous utilisons une boucle
for
pour itérer de 1 à 10. -
if [ $((i % 2)) -eq 0 ]
vérifie si le nombre est pair ( divisible par 2 sans reste). - Si le nombre est pair,
continue
saute à l'itération suivante. - Sinon, nous affichons le nombre.
Lorsque vous exécutez ce script, vous ne verrez que les nombres impairs : 1, 3, 5, 7, 9.
Mettre tout ensemble
Maintenant que nous avons appris sur les boucles infinies, break
, et continue
, créons un exemple plus complexe qui utilise tous ces concepts :
#!/bin/bash
echo "Welcome to the Number Guessing Game!"
secret_number=$((RANDOM % 10 + 1))
attempts=0
while true
do
read -p "Guess a number between 1 and 10 (or 'q' to quit): " guess
if [ "$guess" = "q" ]
then
echo "Thanks for playing! The secret number was $secret_number."
break
fi
if ! [[ "$guess" =~ ^[0-9]+$ ]]
then
echo "Please enter a valid number or 'q' to quit."
continue
fi
attempts=$((attempts + 1))
if [ "$guess" -eq "$secret_number" ]
then
echo "Congratulations! You guessed the number in $attempts attempts!"
break
elif [ "$guess" -lt "$secret_number" ]
then
echo "Too low! Try again."
else
echo "Too high! Try again."
fi
done
Ce script crée un jeu simple de devinette de nombre qui démontre :
- Une boucle infinie pour maintenir le jeu en cours.
- L'utilisation de
break
pour sortir lorsque le joueur devine correctement ou choisit de quitter. - L'utilisation de
continue
pour sauter les entrées invalides.
Résumé des instructions de contrôle des boucles
Voici un tableau de référence rapide des instructions de contrôle des boucles que nous avons apprises :
Instruction | Description | Cas d'utilisation |
---|---|---|
while true |
Crée une boucle infinie | Lorsque vous avez besoin d'une boucle pour s'exécuter en continu jusqu'à ce qu'une condition spécifique soit remplie |
break |
Sort de la boucle actuelle | Lorsque vous voulez arrêter la boucle en fonction d'une certaine condition |
continue |
Passe à l'itération suivante | Lorsque vous voulez sauter le reste de l'itération actuelle en fonction d'une condition |
Souvenez-vous, les boucles sont des outils puissants en programmation, mais avec grand pouvoir vient grande responsabilité. Assurez-vous toujours d'avoir un moyen de sortir de vos boucles, et utilisez break
et continue
avec discernement pour créer des scripts efficaces et efficaces.
Bonne programmation, futurs magiciens du scripting Shell ! Que vos boucles soient infinies uniquement lorsque vous le souhaitez, et que vos instructions break
soient toujours là lorsque vous en avez besoin. Jusqu'à la prochaine fois, continuez à boucler et à apprendre !
Credits: Image by storyset