GNU/Linux >> Tutoriels Linux >  >> Linux

Conseil de pro :Boucles For, While et Until

NIVEAU :SYSADMIN / DURÉE :1-2 min.

Voici quelques exemples pratiques de référence rapide pour revenir facilement si vous avez besoin d'utiliser des boucles for, while et until dans vos scripts shell bash. C'est parfait pour mettre en signet et revenir à une date ultérieure. J'oublie toujours les subtiles différences de syntaxe de bash par rapport aux autres langages que j'utilise, par exemple C, PHP, Python, etc.

Avant de vous montrer les exemples, il est utile de savoir quand utiliser chaque type de boucle :

  • Le pour loop est un peu différent des autres langages de programmation. En gros, cela vous permet de parcourir une série d'éléments dans une chaîne.
  • Le pendant que boucle exécute les éléments à exécuter si l'expression de contrôle est vraie, et ne s'arrête que lorsqu'elle est fausse (ou qu'une rupture explicite est trouvée dans le code exécuté.
  • Le jusqu'à est presque identique à la boucle while, sauf que le code est exécuté alors que l'expression de contrôle est évaluée à false.

POUR Exemple 1 :Répétition simple

Ce type de boucle simple compte simplement les valeurs fournies. Dans ce cas, cela commence à 1 et va jusqu'à 5. C'est la répétition la plus basique.


#!/bin/bash
for i in 1 2 3 4 5
do
echo "Hello, I've done this loop $i times"
done

POUR Exemple 2 : Répéter une action 50 fois :

La répétition peut être effectuée en commençant à une valeur et en incrémentant un compteur. C'est comme vous le feriez dans des langages de programmation plus conventionnels. La seule chose dont vous devez vous souvenir est d'utiliser le (( pour exprimer un calcul numérique.


#!/bin/bash
for ((i=1;i<=50;i++));
do
# your command, eg: echo $i
done

Cet exemple fait exactement ce qu'il est censé faire. Mais il existe des moyens plus simples qui n'ont pas à vous rappeler la double parenthèse légèrement ésotérique. Jetez un œil aux exemples ci-dessous.

POUR Exemple 3 :Travailler avec des plages numériques

Plages

Parfois, vous devrez peut-être définir une valeur de pas (par exemple, compter par deux ou compter à rebours). Notez que bash version 3.0+ a une prise en charge intégrée pour l'utilisation des plages, mais pas vraiment pratique pour les plages de pas :

#!/bin/bash
for i in {1..5}
do
echo "This is the $i iteration of this loop"
done

Etape :

La plupart des distributions Linux modernes exécutent Bash v4.0+, qui prend en charge la configuration d'une valeur de pas à l'aide de {START.. FIN.. Syntaxe INCREMENT} :

#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
do
echo "This is the $i iteration of this loop"
done

Sortie :

This is the 0 iteration of this loop
This is the 2 iteration of this loop
This is the 4 iteration of this loop
This is the 6 iteration of this loop
This is the 8 iteration of this loop
This is the 10 iteration of this loop

POUR Exemple 4 :Travailler sur les mots, les arguments et la sortie des commandes

Plus tôt, nous avons travaillé sur des plages numériques, mais le fait est que la boucle FOR évalue les arguments plutôt que des nombres, un nombre est simplement un . Cela signifie que vous pouvez lui dire de fonctionner sur chaque itération basée sur la ligne. Par exemple, ce qui suit exécutera la commande ls. Pour chaque élément qu'il voit, il fera écho à la ligne. Notez que cela fonctionne sur une chaîne de mots, pas sur une liste de lignes. Donc, si vous utilisez ls -l, cela ne fournira pas de sortie utile, notez également que si vous avez des noms de fichiers avec des espaces, il les interprète comme des mots différents (arguments qui sont fournis à pour ).

#!/bin/bash
for i in $( ls *txt ); do
echo item: $i
done

PENDANT Exemple :

Pendant que émule essentiellement le langage de programmation plus classique pour la structure en boucle :

#!/bin/bash
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER=COUNTER+1
done

JUSQU'À Exemple :


#!/bin/bash
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done


Linux
  1. Bash For Loop Guide et exemples

  2. Pris dans la boucle ? Awk While, Do While, For Loop, Break, Continue, Exit Exemples

  3. Vous tenir au courant - Exemples de boucle Bash For, While, Until

  4. Prise en charge Big Endian et Little Endian pour l'ordre des octets

  5. Boucle for imbriquée

Bash pour la boucle

Bash jusqu'à la boucle

Bash pause et continuer

Bash Scripting - Boucle While And Until expliquée avec des exemples

Bash For Loops avec des exemples

Bash Scripting Part2 - Boucles For et While avec exemples