Les boucles en Bash : répéter sans sombrer
La boucle est l’un des piliers de la programmation. En Bash, elle permet de répéter des commandes automatiquement, sans avoir à se suicider en copiant/collant 50 fois la même ligne.
C’est un outil de puissance, d’élégance… et parfois, de souffrance. Mal utilisée, elle devient une boucle infinie. Bien utilisée, elle vous fait gagner des heures.
Mais c’est quoi une boucle ?
En informatique, une boucle est une structure qui permet de répéter un bloc de code tant qu’une condition est remplie, ou pour chaque élément d’un ensemble.
Les types de boucles en Bash
Bash offre trois principaux types de boucles :
for
– pour parcourir une séquence (de nombres, de fichiers, de mots…)while
– tant qu’une condition est vraieuntil
– jusqu’à ce qu’une condition devienne vraie
La boucle for
1. Sur une liste fixe
#!/bin/bash for fruit in pomme banane cerise; do echo "J'aime le fruit : $fruit" done
2. Sur une séquence de nombres
#!/bin/bash for i in {1..5}; do echo "Compteur : $i" done
Avec un pas personnalisé :
for i in {0..10..2}; do echo "Pair : $i" done
3. En style C (classique chez les informaticiens insomniaques)
#!/bin/bash for ((i=0; i<5; i++)); do echo "i vaut $i" done
4. Sur les fichiers d’un dossier
#!/bin/bash for fichier in *.txt; do echo "Fichier trouvé : $fichier" done
⚠️ Attention aux fichiers avec des espaces ou caractères spéciaux. Utilisez des guillemets : "$fichier"
.
La boucle while
1. Exemple classique : tant que compteur < 5
#!/bin/bash compteur=0 while [ $compteur -lt 5 ]; do echo "Compteur : $compteur" ((compteur++)) done
2. Lire un fichier ligne par ligne
#!/bin/bash while IFS= read -r ligne; do echo "Ligne : $ligne" done < monfichier.txt
3. Boucle infinie (à vos risques et périls)
while true; do echo "Ctrl+C pour arrêter" sleep 1 done
La boucle until
until
est l’inverse de while
: le code tourne jusqu’à ce que la condition soit vraie.
#!/bin/bash i=0 until [ $i -ge 5 ]; do echo "i = $i" ((i++)) done
Interrompre ou contrôler une boucle
break
: sort immédiatement de la bouclecontinue
: saute à l’itération suivante
done
#!/bin/bash for i in {1..5}; do if [ $i -eq 3 ]; then echo "Je saute $i" continue fi echo "i = $i" done
Combiner boucle + condition
#!/bin/bash for fichier in *; do if [ -d "$fichier" ]; then echo "$fichier est un dossier" elif [ -f "$fichier" ]; then echo "$fichier est un fichier" fi done
Lecture interactive avec while
#!/bin/bash while true; do read -p "Entrez un mot (ou stop pour sortir) : " mot [ "$mot" == "stop" ] && break echo "Vous avez écrit : $mot" done
Bonus : boucle dans une fonction
#!/bin/bash afficher_compteur() { for i in {1..3}; do echo "Boucle interne $i" done } afficher_compteur
Erreurs fréquentes (et comment éviter le désastre)
- Oublier le
do ... done
: Bash n’aime pas les oublis de syntaxe - Utiliser
=
au lieu de-eq
dans une condition numérique - Mettre
for i in 1..5
au lieu de{1..5}
- Ne pas protéger les variables avec
"$var"
→ danger si vide ou avec espaces
Conclusion : la boucle, puissance répétitive maîtrisée
Les boucles Bash vous permettent de parcourir, répéter, automatiser. Elles sont essentielles pour tous les scripts utiles — nettoyage, sauvegarde, analyse, installation par lot…
Et surtout : ne vous laissez pas piéger par la boucle infinie. Elle tourne… jusqu’à ce que votre patience ou votre CPU cède.