Boucles For, While et Until

Les boucles sont une fonctionnalité puissante dans n’importe quel langage de programmation. Si vous ne le savez pas déjà, les boucles sont un moyen de répéter le code en fonction de certains critères.
Par exemple, imaginez que vous devez imprimer les nombres de 1 à 10. Vous pouvez écrire la commande echo dix fois mais c’est très primitif. Vous utilisez une boucle et en 3-4 lignes de code, cela peut être fait.
C’est le plus simple des exemples auxquels je pouvais penser. Je vais partager des exemples réels et utiles pendant que je discute des boucles bash avec vous.
Il existe trois types de boucles dans Bash :
Je vais montrer les trois types de bouclage dans le tutoriel. Commençons par le plus courant.
Contents
Pour la boucle dans bash
Voici la syntaxe de ‘for loop’ dans bash :
for arg in LIST; do
commands
done
La LISTE ici peut être un tableau ou une liste d’éléments. Les extensions d’accolades sont également populaires pour les boucles.
Prenez le scénario le plus simple que j’ai mentionné au début. Imprimons les nombres de 1 à 10 en utilisant la boucle for :
#!/bin/bash
for num in {1..10}; do
echo $num
done
Si vous l’exécutez, vous devriez voir une sortie comme celle-ci :
abhi[email protected]:~/bash_scripts$ ./for-loop.sh
1
2
3
4
5
6
7
8
9
10
Vous auriez également pu utiliser for num in 1 2 3 4 5 6 7 8 9 10; do
mais l’utilisation de l’expansion des accolades rend le code plus court et plus intelligent.
{..}
est utilisé pour développer un motif. Tu utilises {d..h}
et cela équivaut à d e f g h
. Vous trouverez plus d’informations sur l’expansion des accolades dans cet article.
Utilisation de l’expansion des accolades dans Bash Shell
L’expansion des accolades dans le shell bash est une fonctionnalité moins connue mais impressionnante. Apprenez à les utiliser comme un utilisateur Pro Linux avec des exemples pratiques.

💡
pour ((i = 0 ; i < 10 ; i++)); faire
écho $i
fait
Voyons un autre exemple qui affiche tout le contenu d’un tableau en bash :
#!/bin/bash
distros=(Ubuntu Fedora Debian Alpine)
for i in "${distros[@]}"; do
echo $i
done
Si vous exécutez le script, il affichera toutes les distributions définies dans le tableau :
Ubuntu
Fedora
Debian
Alpine
Boucle While dans bash
La boucle while teste une condition, puis continue de boucler tant que la condition est vraie.
while [ condition ]; do
commands
done
Si vous prenez l’exemple précédent, il peut être réécrit en utilisant la boucle while comme ceci :
#!/bin/bash
num=1
while [ $num -le 10 ]; do
echo $num
num=$(($num+1))
done
Comme vous pouvez le voir, vous deviez définir la variable num
à 1 d’abord, puis dans le corps de la boucle, vous augmentez la valeur de num
par 1. La boucle while vérifie la condition et l’exécute tant que num
est inférieur ou égal à 10.
Ainsi, exécuter le script maintenant affichera le résultat exact que vous avez vu précédemment avec la boucle for.
1
2
3
4
5
6
7
8
9
10
Voyons un autre exemple. Voici un script bash qui prend un nombre comme argument et affiche sa table.
#!/bin/bash
echo "Table for $1 is:"
index=1
while [ $index -le 10 ]; do
echo $(($1*$index))
index=$(($index+1))
done
Si vous êtes confus quant à l’utilisation de $1, il représente le premier argument passé au script. Consultez le chapitre 3 de cette série pour plus de détails.
Si vous exécutez le script, il devrait afficher ce résultat :
[email protected]:~/bash_scripts$ ./table.sh 2
Table for 2 is:
2
4
6
8
10
12
14
16
18
20
Jusqu’à la boucle dans bash
C’est le format de boucle le moins utilisé. Elle se comporte de la même manière que la boucle while. La différence ici est que la boucle s’exécute jusqu’à ce que la condition qu’elle vérifie soit fausse. Je vais l’expliquer un peu. Voyons d’abord sa syntaxe.
until [ condition ]; do
commands
done
Maintenant, si je dois utiliser le même exemple d’impression de nombres de 1 à 10 en utilisant jusqu’à la boucle, cela ressemblerait à ceci :
#!/bin/bash
num=1
until [ $num -gt 10 ]; do
echo $num
num=$(($num+1))
done
La différence est dans la condition; le reste reste le même.
- La boucle while s’est exécutée pendant que la variable
num
était inférieur ou égal à 10. - La boucle until s’exécute jusqu’à ce que la variable
num
devient supérieur à 10.
Les deux sont des façons différentes de faire la même chose. While est plus populaire car vous trouverez une boucle while équivalente dans la plupart des langages de programmation.
🏋️ Temps d’exercice
C’était amusant. Il est temps de faire un peu d’exercice maintenant.
Exercice 1: écrivez un script qui prend un nombre comme argument et imprime sa table. Votre script doit également afficher un message si le script est exécuté sans argument.
Production attendue:
$: ./table.sh
You forgot to enter a number
$: ./table.sh 3
3
6
9
12
15
18
21
24
27
30
Exercice 2: Écrivez un script qui liste tous les fichiers du répertoire /var
Indice: Utilisez la boucle for avec /var/* comme ‘liste’.
La série Bash Basics touche à sa fin. En tant que dernier chapitre de la série, vous apprendrez à utiliser les fonctions dans les scripts bash la semaine prochaine. Restez à l’écoute.