Dans les langages de programmation, Boucles sont des composants essentiels et sont utilisés lorsque vous souhaitez répéter du code encore et encore jusqu’à ce qu’une condition spécifiée soit remplie.
Dans Frapper scénarisation, boucles jouent à peu près le même rôle et sont utilisés pour automatiser des tâches répétitives comme dans les langages de programmation.
Dans Frapper scripts, il existe 3 types de boucles: pour la boucle, boucle whileet jusqu’à la boucle. Les trois sont utilisés pour parcourir une liste de valeurs et exécuter un ensemble donné de commandes.
Dans ce guide, nous nous concentrerons sur les Bash pour la boucle sous Linux.
Bash pour la syntaxe de la boucle
Comme mentionné précédemment, le pour la boucle itère sur une plage de valeurs et exécute un ensemble de commandes.
Pour la boucle prend la syntaxe suivante :
for variable_name in value1 value2 value3 .. n do command1 command2 commandn done
Voyons maintenant quelques exemples d’utilisation de la boucle bash for.
Boucle simple pour Bash
Dans sa forme la plus simple, le Pour la boucle prend le format de base suivant. Dans cet exemple, la variable n
itère sur un groupe de valeurs numériques entre accolades et affiche leurs valeurs sur stdout.
for n in {1 2 3 4 5 6 7}; do echo $n done
Bash For Loop avec des plages
Dans les exemples précédents, nous avons listé explicitement les valeurs à itérer par le pour la boucle, qui fonctionne très bien. Cependant, vous ne pouvez qu’imaginer à quel point une tâche serait fastidieuse et chronophage si vous deviez parcourir, par exemple, une centaine de valeurs. Cela vous obligerait à taper toutes les valeurs de 1 à 100.
Pour résoudre ce problème, spécifiez une plage. Pour ce faire, indiquez le nombre de démarrage et d’arrêt séparés par deux points.
Dans cet exemple, 1 est la première valeur tandis que 7 est la dernière valeur de la plage.
#!/bin/bash for n in {1..7}; do echo $n done
Une fois le script shell exécuté, toutes les valeurs de la plage sont répertoriées, comme ce que nous avions dans boucles simples.
De plus, nous pouvons inclure une valeur à la fin de la plage qui va provoquer le pour la boucle pour parcourir les valeurs par étapes incrémentielles.
Le script bash suivant imprime les valeurs entre 1 et 7 avec 2 étapes incrémentielles entre les valeurs à partir de la première valeur.
#!/bin/bash for n in {1..7..2}; do echo $n done
Dans l’exemple ci-dessus, vous pouvez voir que le boucle incrémenté les valeurs à l’intérieur des accolades de 2 valeurs.
Bash For Loops avec des tableaux
Vous pouvez également parcourir facilement les valeurs définies dans un tableau à l’aide d’un Pour la boucle. Dans l’exemple suivant, le pour la boucle parcourt toutes les valeurs à l’intérieur du tableau de fruits et les imprime sur stdout.
#!/bin/bash fruits=("blueberry" "peach" "mango" "pineapple" "papaya") for n in ${fruits[@]}; do echo $n done
La @
l’opérateur accède ou cible tous les éléments. Cela permet d’itérer sur tous les éléments un par un.
De plus, vous pouvez accéder à un seul élément en spécifiant sa position dans le tableau.
Par exemple pour accéder au «mangue« , remplacer l’élément @
opérateur avec la position de l’élément dans le tableau (le premier élément commence à 0, donc dans ce cas, « mangue» sera noté 2).
Voici à quoi ressemble la boucle for.
#!/bin/bash fruits=("blueberry" "peach" "mango" "pineapple" "papaya") for n in ${fruits[2]}; do echo $n done
Boucles For de style Bash C
Vous pouvez utiliser des variables à l’intérieur des boucles pour itérer sur une plage d’éléments. C’est ici que Style C pour les boucles entrer. L’exemple suivant illustre un Boucle for de style C qui imprime une liste de valeurs numériques de 1 à 7.
#!/bin/bash n=7 for (( n=1 ; n<=$n ; n++ )); do echo $n done
Boucles For de style Bash C avec instructions conditionnelles
Vous pouvez inclure des instructions conditionnelles à l’intérieur Style C pour les boucles. Dans l’exemple suivant, nous avons inclus une instruction if-else qui vérifie et imprime les nombres pairs et impairs entre 1 et 7.
#!/bin/bash for (( n=1; n<=7; n++ )) do # Check if the number is even or not if (( $n%2==0 )) then echo "$n is even" else echo "$n is odd" fi done
Utilisez l’instruction ‘Continue’ avec Bash For Loop
La ‘Continuez‘ est une commande intégrée qui contrôle l’exécution d’un script. Outre les scripts bash, il est également utilisé dans des langages de programmation tels que Python et Java.
La continuer la déclaration arrête l’itération en cours à l’intérieur d’un boucle lorsqu’une condition spécifique est remplie, puis reprend l’itération.
Prendre en compte pour la boucle indiqué ci-dessous.
#!/bin/bash for n in {1..10} do if [[ $n -eq '6' ]] then echo "Target $n has been reached" continue fi echo $n done
Voici ce que fait le code :
- Ligne 2: marque le début de la boucle for et itère la variable n de 1 à 10.
- Ligne 4: Vérifie la valeur de n et si la variable est égale à 6, le script renvoie un message vers stdout et redémarre la boucle à la prochaine itération de la ligne 2.
- Ligne 9: Affiche les valeurs à l’écran uniquement si la condition de la ligne 4 est fausse.
Voici la sortie attendue après l’exécution du script.
Utilisez l’instruction ‘break’ avec Bash For Loop
La ‘Pause’ L’instruction, comme son nom l’indique, arrête ou termine l’itération lorsqu’une condition est remplie.
Prendre en compte Pour la boucle dessous.
#!/bin/bash for n in {1..10} do if [[ $n -eq '6' ]] then echo "Target $n has been reached" break fi echo $n done echo "All done"
Voici ce que fait le code :
- Ligne 2: marque le début de la boucle for et itère la variable n de 1 à 10.
- Ligne 4: Vérifie la valeur de n et si la variable est égale à 6, le script renvoie un message vers stdout et stoppe l’itération.
- Ligne 9: Affiche les nombres à l’écran uniquement si la condition de la ligne 4 est fausse.
À partir de la sortie, vous pouvez voir que la boucle s’arrête une fois que la variable remplit la condition de la boucle.
Conclusion
C’était un tutoriel sur Bash pour les boucles. Nous espérons que vous avez trouvé cela perspicace. N’hésitez pas à peser avec vos commentaires.
Si vous appréciez ce que nous faisons ici sur TecMint, vous devriez considérer :
TecMint est le site communautaire à la croissance la plus rapide et le plus fiable pour tout type d’articles, de guides et de livres Linux sur le Web. Des millions de personnes visitent TecMint ! pour rechercher ou parcourir les milliers d’articles publiés accessibles GRATUITEMENT à tous.
Si vous aimez ce que vous lisez, pensez à nous acheter un café (ou 2) en signe d’appréciation.
Nous sommes reconnaissants pour votre soutien sans fin.
Bonjour et merci de partager vos connaissances
#!/bin/bash
n=7
for (( n=1 ; n<=$n ; n++ ));
do
echo $n
done
mais cette boucle ne s'arrête jamais , pourquoi ? Merci