Comment faire une Boucle en Bash ?
Le Bash est un langage capricieux qui a une syntaxe différente des langages comme Python ou JavaScript.
En plus, la plupart des développeurs n’utilisent que rarement le scripting Linux avec Bash.
C’est donc facile d’oublier la syntaxe exactes des boucles while ou for en bash pour ces raisons !
Dans cet article, on voit différents exemples de boucles dans le shell que vous utilisiez bash, zsh, csh, ksh ou une autre surcouche sh !
La boucle for i = 0; i < n; i++ en bash
Le style de boucle for qui est probablement le plus facile à retenir si vous venez d’un autre langage de programmation est les boucles for de “style C” (C-styled en anglais).
La syntaxe est un peu différente car on a des doubles parenthèses.
for (( i=0 ; i<=5 ; i++ ))
do
echo "i = $i"
done
Ce qui donnera :
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
La boucle for i in range en bash
La boucle bash for i in range
est similaire à la boucle for en Python avec la fonction native python range
.
Par exemple, pour boucler de 0 à 5 (compris), on peut utiliser {0..5}
:
for i in {0..5}
do
echo "i = $i"
done
Ce qui donnera :
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
{start..end}
permet de créer une séquence en bash sur laquelle on peut boucler.
La boucle for each en bash
La boucle for permet aussi de boucler sur un nombre indéfini d’éléments comme le contenu d’un tableau, d’un fichier ou de n’importe quel type de structure de données itérable.
Pour boucler sur un tableau en Bash, on peut utiliser une boucle for … in … comme celle-ci :
langages=("JavaScript" "Python" "Bash")
for langage in "${langages[@]}"
do
echo "Langage : $langage"
done
Ce qui donnera :
Langage : JavaScript
Langage : Python
Langage : Bash
Les principales structures de données itérables sont :
- Les listes :
a b c
- Les tableaux :
("a" "b" "c")
- Les fichiers :
/chemin/*
- Les paramètres :
"$@"
La boucle for sur une liste en bash
En bash, une liste est une série d’éléments souvent séparés par des espaces : a b c
.
On peut boucler sur une liste en utilisant une boucle for :
for lettre in a b c
do
echo "$lettre"
done
Ce qui donnera :
a
b
c
La boucle for en sautant de plusieurs pas
Depuis la version 4.0 de bash, on peut aussi sauter de plusieurs pas/steps dans une boucle for … in … De base, on incrémente de 1 à chaque passage dans la boucle, mais disons qu’on veuille incrémenter d’une autre valeur, on pourrait utiliser une séquence {start..end..step}
.
Par exemple, pour boucler de 0 à 10 (inclus) en itérant de 2 pas à chaque fois :
for i in {0..10..2}
do
echo "i = $i"
done
Ce qui donnera :
i = 0
i = 2
i = 4
i = 6
i = 8
i = 10
🐍 Les séquences fonctionnent de manière similaire à la fonction
range()
en Python, si vous voulez en apprendre plus sur cette fonction native, alors mon article sur la fonction range en Python vous intéressera sûrement.
La boucle while en bash
La boucle while en bash permet de boucler tant qu’une condition est vraie. Sa syntaxe est un peu différente des autres langage de programmation avec l’opérateur “less than” -lt
, l’utilisation de crochets []
et l’incrémentation de la variable i=$((i + 1))
.
i=0
while [ $i -lt 5 ]
do
echo "$i"
i=$((i + 1))
done
i = 0
i = 1
i = 2
i = 3
i = 4
La boucle until en bash
La boucle until en bash permet de boucler tant qu’une condition est fausse. C’est donc l’inverse d’une boucle while.
i=0
until [ $i -gt 5 ]
do
echo "$i"
i=$((i + 1))
done
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
La boucle select en bash
La boucle select en bash est un peu différente d’une boucle traditionnelle dans le sens qu’elle est utilisée pour boucler sur des choix d’utilisateurs comme dans un menu par exemple. L’utilisateur pourra donc rester dans la boucle et choisir des options jusqu’à l’arrêt du script.
select choix in Commandes Aide Quitter
do
case $choix in
Commandes)
echo "cd, ls, cp, mv, rm"
;;
Aide)
echo "Ce script affiche certaines des commandes shell les plus utilisées"
;;
Quitter)
break
;;
*)
echo "Option invalide"
;;
esac
done
1) Commandes 2) Aide 3) Quitter
?# 0
Option invalide
?# 1
cd, ls, cp, mv, rm
?# 2
Ce script affiche certaines des commandes shell les plus utilisées
?# 3
Aller plus loin en scripting bash
Bravo 🎉 vous savez maintenant comment faire des boucles en bash !
Apprendre la base des outils de programmation et des langages comme bash vous permettra de gagner beaucoup de temps au quotidien.
Sur ce blog, je vous propose de nombreux tutoriels pour apprendre bash et le scripting en général.
Les articles suivants vous plairont sûrement si c’est quelque chose que vous voulez apprendre :
Je m'appelle Thomas, et je code depuis plus de 20 ans. Depuis ma sortie de la première promotion de l'École 42, j'ai conçu et développé des centaines d'applications et de sites web. Sur ce blog, je partage avec vous les stratégies les plus efficaces pour maîtriser l'art de coder et progresser rapidement.