Bonjour !
Dans notre dernière leçon, vous avez appris à doter vos scripts d'une capacité de décision en utilisant les structures conditionnelles if, else et elif. Vos scripts peuvent désormais analyser une situation et choisir le bon chemin à suivre. C'est une compétence cruciale, mais pour l'instant, ils ne peuvent prendre qu'une seule décision à la fois.
Aujourd'hui, nous allons décupler la puissance de vos scripts. L'objectif est d'utiliser les boucles (for, while) pour effectuer des tâches répétitives. Imaginez devoir renommer une centaine de fichiers, vérifier l'état de dix services ou traiter chaque ligne d'un fichier journal. Au lieu d'écrire la même commande cent fois, une boucle le fait pour vous, de manière automatique et sans erreur. C'est le cœur de l'automatisation en administration système.
Nous allons découvrir les deux types de boucles principaux en Bash et voir comment les combiner avec les conditions que vous maîtrisez déjà pour créer des outils d'automatisation réellement puissants.
1. La boucle for : Répéter une action pour chaque élément d'une liste
La boucle for est votre outil de prédilection lorsque vous avez une liste finie d'éléments et que vous souhaitez effectuer la même action sur chacun d'eux. Ces éléments peuvent être une liste de noms de fichiers, de noms d'utilisateurs, de numéros ou d'adresses IP.
La syntaxe la plus courante et la plus intuitive est la suivante :
for variable in element1 element2 element3
do
# Commandes à exécuter pour chaque élément
# La 'variable' contient l'élément en cours de traitement
done
Itérer sur des listes et des fichiers
Pour commencer, voyons comment utiliser cette syntaxe pour parcourir une simple liste de valeurs. Puis, nous passerons immédiatement à un cas d'usage beaucoup plus pertinent pour un administrateur système : traiter tous les fichiers d'un dossier.
Script Bash - Maitrisez les boucles For
Cette vidéo d'IT-Connect présente la boucle for et sa syntaxe de base. Elle montre ensuite comment l'utiliser pour des tâches d'administration concrètes comme l'analyse de fichiers.
Regardez ces deux segments : De 00:31 à 02:28 pour comprendre la syntaxe de base for var in liste. De 04:18 à 06:04 pour voir un exemple pratique de parcours de fichiers pour compter leurs lignes. C'est un excellent exemple d'automatisation.
Comme vous l'avez vu, utiliser un caractère générique (wildcard) comme *.txt permet de générer dynamiquement la liste de tous les fichiers correspondants. C'est une technique extrêmement puissante.
Un cas pratique : le renommage en masse
L'un des usages les plus gratifiants des boucles est le renommage de fichiers en masse. C'est une tâche fastidieuse et sujette aux erreurs lorsqu'elle est faite manuellement, mais triviale à automatiser avec une boucle for.
Script Bash - Maitrisez les boucles For
Continuons avec la même vidéo pour voir un autre exemple très concret : renommer plusieurs fichiers en leur ajoutant un préfixe.
Regardez la vidéo de 06:04 à 07:17. Observez comment la commande mv est utilisée à l'intérieur de la boucle pour renommer chaque fichier un par un.
Il existe une autre syntaxe pour la boucle for, dite "de style C", qui est souvent utilisée pour des boucles numériques (par exemple, pour répéter une action un nombre de fois précis). Vous pouvez consulter la section de 02:28 à 04:18 de la même vidéo pour la découvrir, mais pour débuter, la syntaxe for variable in liste que nous venons de voir est souvent plus claire et plus polyvalente.
2. La boucle while : Répéter une action tant qu'une condition est vraie
Contrairement à la boucle for qui parcourt une liste d'éléments, la boucle while exécute un bloc de commandes tant qu'une condition reste vraie. On ne sait pas forcément à l'avance combien de fois la boucle va tourner. Elle s'arrête dès que la condition devient fausse.
La syntaxe est la suivante :
while [ condition ]
do
# Commandes à exécuter tant que la condition est vraie
# Important : une commande ici doit pouvoir faire en sorte que la condition devienne fausse un jour !
done
C'est cette dernière remarque qui est cruciale. Si rien dans la boucle ne modifie la condition, vous créerez une boucle infinie, et votre script ne s'arrêtera jamais.

Syntaxe de base
Voyons la syntaxe en action avec un exemple simple de compteur.
Script Bash - Maitrisez les boucles While
Cette vidéo du même auteur, Florian d'IT-Connect, explique la syntaxe de la boucle while et la compare à ce que nous connaissons déjà.
Regardez de 00:03 à 02:52. Concentrez-vous sur la syntaxe while [ condition ] et sur l'importance de la ligne qui incrémente la variable pour éviter une boucle infinie.
Application avancée : lire un fichier ligne par ligne
L'un des usages les plus puissants de la boucle while en administration système est de lire un fichier de configuration ou un journal ligne par ligne pour en traiter le contenu. C'est une technique que vous utiliserez constamment.
L'exemple suivant est très pertinent : le script lit un fichier contenant des adresses IP et exécute une commande pour chaque adresse.
Script Bash - Maitrisez les boucles While
Ce segment présente un cas d'usage professionnel de la boucle while pour traiter un fichier texte.
Regardez la vidéo de 04:32 à 08:08. Ne vous inquiétez pas de tous les détails de la syntaxe while IFS= read -r .... Retenez simplement le principe : cette construction permet de lire un fichier de manière sûre, une ligne à la fois, et de placer chaque ligne dans une variable pour la traiter.
3. Le duo gagnant : Combiner boucles et conditions
La véritable puissance de l'automatisation vient de la combinaison des boucles et des conditions.
- La boucle (
forouwhile) s'occupe de la répétition (parcourir tous les fichiers, lire toutes les lignes). - La condition (
if) s'occupe de la décision pour chaque élément (ce fichier est-il un.log? cette ligne contient-elle le mot "ERROR" ?).
Imaginons que vous deviez vérifier l'état de plusieurs services sur un serveur. Au lieu de le faire manuellement, vous pouvez utiliser une boucle for pour lister les services et un if à l'intérieur pour vérifier l'état de chacun.
Script Bash - Maitrisez les boucles For
Pour conclure, retournons à notre première vidéo pour voir un exemple parfait qui combine une boucle for et une condition if.
Regardez de 08:54 à 10:14. Cet exemple parcourt une liste de services et utilise if systemctl is-active ... pour vérifier si chaque service est actif ou non. C'est un script d'administration système typique.
4. À vous de jouer !
Mettons en pratique ces concepts avec un exercice qui combine les leçons d'aujourd'hui et de la dernière fois.
Votre mission :
Créez un script nommé process_files.sh qui effectue les tâches suivantes :
- Le script doit traiter une liste de fichiers qui lui sont passés en arguments (par exemple,
./process_files.sh fichier1.txt document.pdf image.jpg). - Il doit utiliser une boucle
forpour parcourir chaque argument. Rappelez-vous que la variable spéciale"$@"contient tous les arguments passés à un script. La boucle ressemblera donc àfor fichier in "$@" - À l'intérieur de la boucle, pour chaque argument (
fichier), le script doit :- Vérifier si le fichier se termine par
.txt. (Indice : vous pouvez utiliser une condition commeif [[ "$fichier" == *.txt ]]). - Si oui, il doit afficher
Traitement du fichier texte : [nom_fichier] - Si non, il doit afficher
Fichier ignoré : [nom_fichier]
- Vérifier si le fichier se termine par
Exemple d'exécution :
touch rapport.txt notes.doc presentation.txt
./process_files.sh rapport.txt notes.doc presentation.txt
Résultat attendu :
Traitement du fichier texte : rapport.txt
Fichier ignoré : notes.doc
Traitement du fichier texte : presentation.txt
Cet exercice vous amène à utiliser une boucle for pour itérer sur une liste et une condition if pour prendre une décision à chaque itération.
Pour vous aider à mémoriser les syntaxes, vous pouvez consulter la ressource textuelle ci-dessous. Elle couvre les mêmes concepts que les vidéos et peut servir d'aide-mémoire.
Cet article du site Goffinet.org est une référence textuelle concise sur les boucles. Il présente les syntaxes des boucles for et while avec des exemples clairs.
Consultez les sections "3.1. Boucle for-do" et "3.2. Boucle while". Utilisez-le comme un résumé pour renforcer votre compréhension des syntaxes de base.
Conclusion
Félicitations ! Vous avez ajouté l'outil le plus important de l'automatisation à votre arsenal. Vos scripts peuvent maintenant effectuer des tâches complexes sur un grand nombre d'éléments sans votre intervention.
Les points clés à retenir :
- La boucle
forest idéale pour parcourir une liste d'éléments connue (for fichier in *.log). - La boucle
whileest utilisée pour répéter une action tant qu'une condition est vraie (while read ligne). - La véritable puissance réside dans la combinaison d'une boucle et d'une structure
ifpour prendre des décisions spécifiques à chaque élément traité. - Soyez toujours vigilant à ce que votre boucle
whileait une condition de sortie pour éviter les boucles infinies.
Dans notre prochaine leçon, nous allons mettre tout cela en pratique. Vous allez créer un script complet pour automatiser la sauvegarde de fichiers. Ce sera l'aboutissement de tout ce que vous avez appris sur les variables, les conditions et les boucles, et un premier pas vers la création de vos propres outils d'administration système.