For Loop fait partie intégrante de tout langage de programmation. Il 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 | Violet |
2 | Indigo |
3 | Bleu |
4 | Green |
Pour effectuer des actions ou pour itérer les éléments du tableau ci-dessus, nous avons besoin d'une boucle For.
Bash pour la boucle
Dans un script bash, la syntaxe de la boucle For est la suivante :
#!/bin/bash
for VAR in 1 2 3 4 5.....N
do
ACTION 1
ACTION 2
.....
done
Bash For Loop 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 le bouclage. N indique le nombre maximal 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 Bash For Loop avec différentes variables, telles que des listes, des chaînes, des entiers et des tableaux. Cet article montrera quelques exemples courants de la boucle Bash For.
Vous pouvez directement exécuter ces programmes sur la ligne de commande bash ou les enregistrer dans un fichier et exécuter le fichier à l'aide de la commande Bash filename.sh.
Reading Static List
Considérez la liste suivante - rainbowColorList = Violet, Indigo, Blue, Green, Yellow, Orange, Red
Nous pouvons imprimer la liste de chaînes ci-dessus en utilisant la boucle Bash For comme suit :
#! /bin/sh
# Define the list
rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red
# Comma separator pattern using //,/
for colors in ${rainbowColorList//,/ }
do
echo $colors
done
La sortie sera la liste des éléments dans une nouvelle ligne.
#Output
Violet
Indigo
Blue
Green
Yellow
Orange
Red
Reading an Array
La syntaxe pour déclarer un tableau est différente. Utilisez des parenthèses pour chaque élément (String).
rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")
for colors in "${rainbowArray[@]}"; do
echo "I like $colors"
done
'@' est utilisé pour parcourir chaque élément du tableau.
#Output
I like Violet
I like Indigo
I like Blue
I like Green
I like Yellow
I like Orange
I like Red
Nous pouvons également utiliser la boucle For pour imprimer les index et les éléments du tableau.
#Printing with index
rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")
for i in "${!rainbowArray[@]}";
do
echo "Color at index " $i " : " "${rainbowArray[$i]}"
i=$((i+1));
done
#Output
Color at index 0 : Violet
Color at index 1 : Indigo
Color at index 2 : Blue
Color at index 3 : Green
Color at index 4 : Yellow
Color at index 5 : Orange
Color at index 6 : Red
Notez que nous utilisons '!' dans la boucle pour obtenir l'index de l'élément.
Iterating Range of Numbers
Nous pouvons utiliser Bash For Loop pour itérer sur une plage de nombres.
#iterating over range of numbers
echo "Countdown begins..."
for N in {10..0}
do
echo "$N"
done
Le '..' indique une plage de nombres.
#Output
10
9
8
7
6
5
4
3
2
1
0
Nous pouvons également ignorer les nombres de comptage en spécifiant la plage.
Dans l'exemple ci-dessous, nous comptons par sauts par 3.
#iterating with skip counting
echo "Countdown begins..."
for N in {30..0..3}
do
echo "$N"
done
Le programme ci-dessus commence par 30 comme premier nombre et compte à rebours jusqu'à 0. Le dernier paramètre de la boucle for '3' spécifie le nombre de sauts.
#Output
30
27
24
21
18
15
12
9
6
3
0
Strings and Characters
Nous pouvons faire beaucoup d'opérations intéressantes sur les chaînes avec Bash For Loop.
Par exemple, nous pouvons lire chaque caractère d'une chaîne en utilisant l'opérateur 'seq' dans une boucle For :
#read characters of a string
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.
#Output
W
e
l
c
o
m
e
Nous pouvons également imprimer les chaînes séparées par un espace une par une :
#read each word from a sentence
mysentence="Welcome to GeekFlare. One stop hub for all techies"
for word in $mysentence; do
echo $word
done
#Output
Welcome
to
GeekFlare.
One
stop
hub
for
all
techies
Expressions
Semblable à tout autre langage de programmation comme Java, nous pouvons placer des expressions dans une boucle Bash For.
for (( var=10; var>=0; var-- ))
do
echo "Counting down...$var"
done
#Output
Counting down...10
Counting down...9
Counting down...8
Counting down...7
Counting down...6
Counting down...5
Counting down...4
Counting down...3
Counting down...2
Counting down...1
Counting down...0
Reading Command-Line Arguments
Pour lire à partir des arguments de la ligne de commande, nous utilisons la commande 'read'. Dans l'exemple ci-dessous, nous obtiendrons quelques chiffres de l'utilisateur et imprimerons la somme à l'aide de Bash For Loop. Nous utilisons la variable total pour stocker le total intermédiaire et final ou la somme des nombres.
read -a array -p "Enter the numbers you want to add:"
total=0
for i in ${array[@]}; do
let total+=$i
done
echo "Sum of the numbers is: $total"
La sortie est:
#Output
Enter the numbers you want to add: 3 4 66
Sum of the numbers is: 73
Finding Odd-Even Numbers
Pour trouver des nombres pairs et impairs entre 1 et 10 (ou n'importe quel nombre N), nous devons utiliser la condition if avec Bash for Loop. Pour déterminer un nombre pair, nous diviserons le nombre par 2 et si le reste est 0, nous le catégoriserons comme pair sinon impair.
#declare the list where the even and odd numbers will be sorted and kept
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 "Odd numbers are: "$oddnum
Notez que nous donnons la plage à 10 dans l'exemple ci-dessus. Nous pouvons modifier ce nombre pour obtenir des nombres pairs et impairs entre n'importe quelle plage. Vous pouvez également essayer de lire le numéro de l'utilisateur en utilisant la commande "lire" que nous avons apprise dans la section précédente.
#Output
Even numbers are: 2 4 6 8 10
Odd numbers are: 1 3 5 7 9
Infinite Loop
Infinity ou boucle infinie est une boucle qui n'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 le '; ;' opérateur à l'intérieur de la boucle for :
for (( ; ; ))
do
echo "Welcome to Geekflare"
done
#Output
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
Welcome to Geekflare
^C
$
Break Statement
Les instructions break sont utilisées pour sortir de la boucle lorsqu'une condition "si" est satisfaite.
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 parcourt chaque couleur, et une fois la couleur verte trouvée, le programme sort de la boucle à cause de l'instruction break.
#Output
Searching for Green, the color now is Violet
Searching for Green, the color now is Indigo
Searching for Green, the color now is Blue
I found my color Green
Continue Statement
Continuer est utilisé pour ignorer la boucle actuelle 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
#Output
Violet
Indigo
Blue
Yellow
Orange
Red
Mot de la fin
Nous avons couvert les utilisations les plus courantes d'une boucle Bash For, en utilisant des chaînes, des entiers, des tableaux et des listes. Si vous apprenez Linux mais que vous avez une machine Windows 10, vous pouvez utiliser la fonction WSL et installer Linux sur votre machine Windows.
Vous pouvez ensuite utiliser le terminal Linux de la même manière que CMD.
Ensuite, vous pouvez consulter comment exécuter des scripts bash en utilisant Python.