Introduction
Dans cet atelier, vous allez apprendre à utiliser les boucles dans les scripts Bash. Les boucles sont des outils puissants qui vous permettent de répéter un ensemble d'instructions plusieurs fois, rendant vos scripts plus efficaces et plus flexibles. Nous aborderons trois types de boucles : for, while et until. De plus, vous découvrirez les instructions break et continue, qui permettent de contrôler finement l'exécution des boucles. Cet atelier est conçu pour les débutants et vous guidera pas à pas à travers chaque concept.
Configuration de l'environnement
Commençons par configurer notre environnement de travail. Nous allons créer un nouveau répertoire pour stocker toutes nos expérimentations sur les boucles.
Ouvrez un terminal dans le WebIDE. Vous devriez vous trouver par défaut dans le répertoire /home/labex/project. Si vous n'en êtes pas sûr, vous pouvez toujours vous y rendre en utilisant cette commande :
cd /home/labex/project
Maintenant, créons un nouveau répertoire pour nos exercices sur les boucles :
mkdir bash_loops
cd bash_loops
Cela crée un nouveau dossier nommé bash_loops et vous place à l'intérieur. Nous utiliserons ce répertoire pour tous nos scripts de cet atelier.
Pourquoi procédons-nous ainsi ? Organiser vos scripts dans des répertoires est une bonne pratique. Cela permet de garder votre travail ordonné et facilite la recherche et la gestion de vos fichiers.
La boucle for
La boucle for est utilisée pour itérer sur une liste de valeurs. C'est comme si vous disiez : "Pour chaque élément de cette liste, fais ceci." Créons un script qui illustre l'utilisation d'une boucle for.
Créez un nouveau fichier nommé for_loop.sh dans le répertoire bash_loops :
touch for_loop.sh
Maintenant, ouvrez le fichier for_loop.sh dans le WebIDE et ajoutez le contenu suivant :
#!/bin/bash
## Loop through an array of names
echo "Looping through an array:"
NAMES=("Alice" "Bob" "Charlie" "David")
for name in "${NAMES[@]}"; do
echo "Hello, $name!"
done
echo ## Print an empty line for readability
## Loop through a range of numbers
echo "Looping through a range of numbers:"
for i in {1..5}; do
echo "Number: $i"
done
Analysons ce que fait ce script :
- La première boucle parcourt un tableau de noms. Pour chaque nom présent dans le tableau, elle affiche une salutation.
- La seconde boucle utilise une plage
{1..5}pour compter de 1 à 5.
La syntaxe "${NAMES[@]}" peut paraître complexe. Le symbole @ signifie "tous les éléments du tableau", tandis que les guillemets et les accolades garantissent que chaque élément est traité individuellement, même s'il contient des espaces.
Enregistrez le fichier et rendez-le exécutable avec cette commande :
chmod +x for_loop.sh
La commande chmod +x rend le fichier exécutable, ce qui signifie que vous pouvez le lancer comme un programme.
Maintenant, exécutez le script :
./for_loop.sh
Vous devriez voir un résultat comme celui-ci :
Looping through an array:
Hello, Alice!
Hello, Bob!
Hello, Charlie!
Hello, David!
Looping through a range of numbers:
Number: 1
Number: 2
Number: 3
Number: 4
Number: 5
Cela démontre comment les boucles for peuvent itérer aussi bien sur des tableaux que sur des plages de nombres.
La boucle while
La boucle while exécute un bloc de code tant qu'une condition spécifiée est vraie. C'est comme si vous disiez : "Tant que cette condition est remplie, continue de faire cela."
Créez un nouveau fichier nommé while_loop.sh :
touch while_loop.sh
Ouvrez le fichier while_loop.sh dans le WebIDE et ajoutez le contenu suivant :
#!/bin/bash
## Simple countdown using a while loop
count=5
echo "Countdown:"
while [ $count -gt 0 ]; do
echo $count
count=$((count - 1))
sleep 1 ## Wait for 1 second
done
echo "Blast off!"
Décortiquons ce script :
- Nous commençons avec
count=5pour définir notre valeur de départ pour le compte à rebours. - La condition
[ $count -gt 0 ]signifie "tant que la variable count est plus grande que 0". - À l'intérieur de la boucle, nous affichons la valeur actuelle, nous la diminuons de 1, puis nous attendons une seconde.
- Ce processus se répète jusqu'à ce que
countatteigne 0, moment où la boucle s'arrête.
La commande sleep 1 met le script en pause pendant une seconde, créant ainsi un effet de compte à rebours en temps réel.
Enregistrez le fichier et rendez-le exécutable :
chmod +x while_loop.sh
Maintenant, lancez le script :
./while_loop.sh
Vous verrez un compte à rebours de 5 à 1, avec une pause d'une seconde entre chaque chiffre :
Countdown:
5
4
3
2
1
Blast off!
Cela montre comment une boucle while peut répéter une action jusqu'à ce qu'une condition ne soit plus vérifiée.
La boucle until
La boucle until est similaire à la boucle while, mais avec une différence majeure : elle continue de s'exécuter jusqu'à ce qu'une condition spécifiée devienne vraie. C'est comme si vous disiez : "Continue de faire cela jusqu'à ce que cette condition soit remplie."
Créez un nouveau fichier nommé until_loop.sh :
touch until_loop.sh
Ouvrez le fichier until_loop.sh dans le WebIDE et insérez le contenu suivant :
#!/bin/bash
## Count up to 5 using an until loop
count=1
echo "Counting up to 5:"
until [ $count -gt 5 ]; do
echo $count
count=$((count + 1))
sleep 1 ## Wait for 1 second
done
Analysons ce script :
- Nous initialisons la valeur de départ avec
count=1. - La condition
[ $count -gt 5 ]signifie "jusqu'à ce que count soit plus grand que 5". - À l'intérieur de la boucle, nous affichons le chiffre actuel, nous l'augmentons de 1, puis nous attendons une seconde.
- Cela continue jusqu'à ce que
countdevienne supérieur à 5, ce qui met fin à la boucle.
Enregistrez le fichier et rendez-le exécutable :
chmod +x until_loop.sh
Maintenant, exécutez le script :
./until_loop.sh
Vous verrez les chiffres de 1 à 5 s'afficher avec une seconde d'intervalle :
Counting up to 5:
1
2
3
4
5
Cela illustre comment une boucle until peut répéter une action jusqu'à ce qu'une condition soit enfin satisfaite.
Utilisation des instructions break et continue
Les instructions break et continue servent à contrôler le flux des boucles. break permet de quitter prématurément une boucle, tandis que continue permet de sauter le reste de l'itération actuelle pour passer directement à la suivante.
Créez un nouveau fichier nommé break_continue.sh :
touch break_continue.sh
Ouvrez le fichier break_continue.sh dans le WebIDE et ajoutez le contenu suivant :
#!/bin/bash
## Using break to exit a loop early
echo "Demonstration of break:"
for i in {1..10}; do
if [ $i -eq 6 ]; then
echo "Breaking the loop at $i"
break
fi
echo $i
done
echo ## Print an empty line for readability
## Using continue to skip iterations
echo "Demonstration of continue (printing odd numbers):"
for i in {1..10}; do
if [ $((i % 2)) -eq 0 ]; then
continue
fi
echo $i
done
Analysons ce script :
- Dans la première boucle, nous utilisons
breakpour sortir de la boucle dès queiest égal à 6. - Dans la seconde boucle, nous utilisons
continuepour ignorer les nombres pairs. La condition$((i % 2)) -eq 0vérifie si un nombre est pair (divisible par 2 sans reste).
L'opérateur % calcule le reste d'une division. Ainsi, i % 2 vaudra 0 pour les nombres pairs et 1 pour les nombres impairs.
Enregistrez le fichier et rendez-le exécutable :
chmod +x break_continue.sh
Maintenant, lancez le script :
./break_continue.sh
Le résultat devrait ressembler à ceci :
Demonstration of break:
1
2
3
4
5
Breaking the loop at 6
Demonstration of continue (printing odd numbers):
1
3
5
7
9
Cela démontre comment break peut interrompre une boucle et comment continue peut ignorer certaines étapes en fonction d'une condition.
Résumé
Dans cet atelier, vous avez découvert trois types de boucles en script Bash :
- Les boucles
for, qui itèrent sur une liste d'éléments ou une plage de nombres. - Les boucles
while, qui se poursuivent tant qu'une condition est vraie. - Les boucles
until, qui se poursuivent jusqu'à ce qu'une condition devienne vraie.
Vous avez également appris à utiliser les instructions break et continue, qui vous offrent un contrôle accru sur le comportement de vos boucles.
Ces structures de boucle sont fondamentales pour de nombreux scripts et vous permettront d'automatiser efficacement des tâches répétitives. Entraînez-vous à utiliser ces boucles dans vos propres scripts pour vous familiariser avec leur fonctionnement et leurs cas d'utilisation.



