La boucle For fait partie intégrante de tout langage de programmation. Elle permet aux programmes de parcourir un certain nombre d’éléments.
Par exemple, si vous souhaitez parcourir une liste ou un tableau de “n” éléments, vous utiliserez une boucle for. Prenons un exemple simple :
1 | Violette |
2 | Indigo |
3 | Bleu |
4 | Vert |
Pour effectuer des actions ou pour itérer les éléments du tableau ci-dessus, nous avons besoin d’une boucle For.
Boucle For Bash
Dans un script bash, la syntaxe de For Loop est la suivante :
#!/bin/bash
for VAR in 1 2 3 4 5.....N
do
ACTION 1
ACTION 2
.....
done
La boucle For de Bash est assez simple. La première ligne #!/bin/bash
indique que le code est un script bash. VAR représente la variable temporaire utilisée pour la boucle. N indique le nombre maximum d’itérations. ‘do’ et ‘done’ démarrent et arrêtent la boucle, respectivement. Les actions sont les commandes qui s’exécutent dans la boucle.
Nous pouvons exécuter la boucle Bash For avec différentes variables, telles que des listes, des chaînes de caractères, des entiers et des tableaux. Cet article présente quelques exemples courants de la boucle Bash For.
Vous pouvez exécuter ces programmes directement sur la ligne de commande bash ou les enregistrer dans un fichier et les exécuter à l’aide de la commande Bash filename.sh.
Lecture d’une liste statique
Considérons la liste suivante – rainbowColorList = Violet, Indigo, Bleu, Vert, Jaune, Orange, Rouge
Nous pouvons imprimer la liste de chaînes ci-dessus à l’aide de la boucle For de Bash comme suit :
# ! /bin/sh
# Définir la liste
rainbowColorList=Violet,Indigo,Bleu,Vert,Jaune,Orange,Rouge
# Modèle de séparateur de virgules utilisant //,/
for colors in ${rainbowColorList//,/ }
do
echo $colors
done
La sortie sera la liste des éléments dans une nouvelle ligne.
#Sortie
Violet
Indigo
Bleu
Vert
Jaune
Orange
Rouge
Lecture d’un tableau
La syntaxe de déclaration d’un tableau est différente. Utilisez des parenthèses pour chaque élément (chaîne).
rainbowArray=("Violet" "Indigo" "Bleu" "Vert" "Jaune" "Orange" "Rouge")
for colors in "${rainbowArray[@]}" ; do
echo "I like $colors"
done
@’ est utilisé pour parcourir chaque élément du tableau.
#Output
J'aime le Violet
J'aime l'Indigo
J'aime le Bleu
J'aime le Vert
J'aime le Jaune
J'aime l'Orange
J'aime le Rouge
Nous pouvons également utiliser la boucle For pour imprimer les index et les éléments du tableau.
#Imprimer avec l'index
rainbowArray=("Violet" "Indigo" "Bleu" "Vert" "Jaune" "Orange" "Rouge")
for i in "${!rainbowArray[@]}" ;
do
echo "Color at index " $i " : " "${rainbowArray[$i]}"
i=$((i 1)) ;
done
#Sortie
Couleur à l'index 0 : Violet
Couleur à l'index 1 : Indigo
Couleur à l'index 2 : Bleu
Couleur à l'index 3 : Vert
Couleur à l'index 4 : Jaune
Couleur à l'index 5 : Orange
Couleur à l'index 6 : Rouge
Notez que nous utilisons ‘!’ dans la boucle pour obtenir l’indice de l’élément.
Itération d’une plage de nombres
Nous pouvons utiliser la boucle Bash For pour itérer sur une plage de nombres.
#itération sur une plage de nombres
echo "Countdown begins..."
for N in {10..0}
do
echo "$N"
done
Le ‘..’ indique une plage de nombres.
#Sortie
10
9
8
7
6
5
4
3
2
1
0
Nous pouvons également sauter des nombres en spécifiant la plage.
Dans l’exemple ci-dessous, nous comptons par intervalles de 3.
#itération avec comptage par saut
echo "Le compte à rebours commence..."
for N in {30..0..3}
do
echo "$N"
done
Le programme ci-dessus commence avec 30 comme premier nombre et compte à rebours jusqu’à 0. Le dernier paramètre de la boucle for ‘3’ spécifie le numéro du compte à rebours.
#Sortie
30
27
24
21
18
15
12
9
6
3
0
Chaînes et caractères
Nous pouvons effectuer de nombreuses opérations intéressantes sur les chaînes de caractères avec la boucle Bash For.
Par exemple, nous pouvons lire chaque caractère d’une chaîne en utilisant l’opérateur ‘seq’ dans une boucle For Loop :
#Lire les caractères d'une chaîne
myword="welcome"
for i in $(seq 1 ${#myword})
do
echo "${myword:i-1:1}"
done
Notez que le ‘seq’ doit commencer par 1 pour obtenir le premier caractère en premier.
#Sortie
W
e
l
c
o
m
e
Nous pouvons également imprimer les chaînes de caractères séparées par des espaces, une par une :
#Lire chaque mot d'une phrase
mysentence="Welcome to GeekFlare. One stop hub for all techies"
for word in $mysentence ; do
echo $word
done
#Sortie
Bienvenue
à
GeekFlare.
One
stop
hub
for
all
techies
Expressions
Comme dans tout autre langage de programmation tel que Java, nous pouvons placer des expressions à l’intérieur d’une boucle Bash For.
for (( var=10 ; var>=0 ; var-- ))
do
echo "Counting down...$var"
done
#Sortie
Décompte...10
Décompte...9
Décompte...8
Décompte...7
Décompte...6
Décompte...5
Décompte...4
Décompte...3
Décompte...2
Décompte...1
Décompte...0
Lecture des arguments de la ligne de commande
Pour lire les arguments de la ligne de commande, nous utilisons la commande “read”. Dans l’exemple ci-dessous, nous allons obtenir quelques chiffres de l’utilisateur et imprimer la somme à l’aide de la boucle Bash For. Nous utilisons la variable total pour stocker le total intermédiaire et final ou la somme des nombres.
read -a array -p "Entrez les nombres que vous voulez ajouter :"
total=0
for i in ${array[@]} ; do
let total =$i
done
echo "La somme des nombres est : $total"
La sortie est la suivante :
#Sortie
Entrez les nombres que vous voulez ajouter : 3 4 66
La somme des nombres est : 73
Trouver des nombres pairs et impairs
Pour trouver les nombres pairs et impairs compris entre 1 et 10 (ou tout nombre N), nous devons utiliser la condition if et la boucle Bash for. Pour déterminer un nombre pair, nous diviserons le nombre par 2 et si le reste est égal à 0, nous le classerons dans la catégorie des nombres pairs, sinon dans celle des nombres impairs.
#déclarez la liste où les nombres pairs et impairs seront triés et conservés
evennum=""
oddnum=""
for (( i=1 ; i<=10 ; i ))
do
remainder=$(( $i % 2 ))
if [ $remainder -eq 0 ] ; then
evennum="$evennum $i "
else
oddnum="$oddnum $i "
fi
done
echo "Even numbers are : "$evennum
echo "Les nombres impairs sont : "$oddnum
Notez que nous donnons un intervalle de 10 dans l’exemple ci-dessus. Nous pouvons modifier ce nombre pour obtenir des nombres pairs et impairs dans n’importe quel intervalle. Vous pouvez également essayer de lire le nombre à partir de l’utilisateur en utilisant la commande ‘read’ que nous avons apprise dans la section précédente.
#Sortie
Les nombres pairs sont : 2 4 6 8 10
Les nombres impairs sont : 1 3 5 7 9
Boucle infinie
Une boucle infinie est une boucle qui ne s’arrête pas de s’exécuter, et le programme doit être forcé à s’arrêter en utilisant Ctrl C. Nous pouvons facilement créer une boucle infinie en utilisant l’opérateur ‘ ; ;’ à l’intérieur de la boucle for :
for (( ; ; ))
do
echo "Welcome to Geekflare"
done
#Output
Bienvenue à Geekflare
Bienvenue à Geekflare
Bienvenue à Geekflare
Bienvenue à Geekflare
Bienvenue à Geekflare
Bienvenue à Geekflare
Bienvenue à Geekflare
Bienvenue à Geekflare
Bienvenue à Geekflare
Bienvenue à Geekflare
^C
$
Déclaration de rupture
Les instructions Break sont utilisées pour sortir de la boucle lorsqu’une condition “if” est remplie.
for color in Violet Indigo Blue Green Yellow Orange Red
do
if [[ "$color" == 'Green' ]] ; then
break
fi
echo "Searching for Green, the color now is $color"
done
echo "I found my color $color"
Dans cet exemple, nous essayons de trouver la couleur verte. La boucle For-Loop passe en revue chaque couleur, et une fois la couleur verte trouvée, le programme sort de la boucle grâce à l’instruction break.
#Output
Recherche de la couleur verte, la couleur est maintenant Violet
Recherche de la couleur verte, la couleur est maintenant Indigo
Recherche de la couleur verte, la couleur est maintenant Bleu
J'ai trouvé ma couleur Vert
Instruction Continue
L’instruction Continue est utilisée pour sauter la boucle en cours et passer à la suivante en fonction d’une certaine condition. Par exemple, si vous ne voulez pas imprimer la couleur ‘Vert’ de notre programme précédent, nous pouvons mettre continue, et toutes les autres couleurs sauf le Vert seront affichées.
for color in Violet Indigo Blue Green Yellow Orange Red
do
if [[ "$color" == 'Green' ]] ; then
continue
fi
echo "$color"
done
#Sortie
Violet
Indigo
Bleu
Jaune
Orange
Rouge
Derniers mots
Nous avons couvert les utilisations les plus courantes d’une boucle Bash For, en utilisant des chaînes de caractères, des entiers, des tableaux et des listes. Si vous apprenez Linux mais que vous avez une machine Windows 10, vous pouvez utiliser la fonctionnalité WSL et installer Linux sur votre machine Windows.
Vous pourrez alors utiliser le terminal Linux de manière similaire à CMD.
Ensuite, vous pouvez vérifier comment exécuter des scripts bash à l’aide de Python.