GNU/Linux >> Tutoriels Linux >  >> Linux

Bash pendant la boucle

Les boucles sont l'un des concepts fondamentaux des langages de programmation. Les boucles sont pratiques lorsque vous souhaitez exécuter plusieurs fois une série de commandes jusqu'à ce qu'une condition particulière soit remplie.

Dans les langages de script tels que Bash, les boucles sont utiles pour automatiser les tâches répétitives. Il existe trois constructions de boucle de base dans les scripts Bash, for boucle, while boucle, et until boucle.

Ce tutoriel couvre les bases de while boucles dans Bash. Nous vous montrerons également comment utiliser le break et continue instructions pour modifier le flux d'une boucle.

Bash while Boucle #

Le while La boucle est utilisée pour exécuter un ensemble donné de commandes un nombre inconnu de fois tant que la condition donnée est vraie.

Le Bash while boucle prend la forme suivante :

while [CONDITION]
do
  [COMMANDS]
done

Le while l'instruction commence par le while mot-clé, suivi de l'expression conditionnelle.

La condition est évaluée avant l'exécution des commandes. Si la condition est vraie, les commandes sont exécutées. Sinon, si la condition est fausse, la boucle est terminée et le contrôle du programme sera passé à la commande qui suit.

Dans l'exemple ci-dessous, à chaque itération, la valeur courante de la variable i est imprimé et incrémenté de un.

i=0

while [ $i -le 2 ]
do
  echo Number: $i
  ((i++))
done

La boucle Tue itère tant que i est inférieur ou égal à deux. Il produira la sortie suivante :

Number: 0
Number: 1
Number: 2

Infinite while Boucle #

Une boucle infinie est une boucle qui se répète indéfiniment et ne se termine jamais. Si la condition est toujours évaluée à vrai, vous obtenez une boucle infinie.

Dans l'exemple suivant, nous utilisons la commande intégrée : pour créer une boucle infinie. : renvoie toujours vrai. Vous pouvez également utiliser le true intégré ou toute autre instruction qui renvoie toujours true.

while :
do
  echo "Press <CTRL+C> to exit."
  sleep 1
done

Le while boucle ci-dessus fonctionnera indéfiniment. Vous pouvez terminer la boucle en appuyant sur CTRL+C .

Voici un équivalent sur une seule ligne :

while :; do echo 'Press <CTRL+C> to exit.'; sleep 1; done

Lire un fichier ligne par ligne #

L'une des utilisations les plus courantes du while boucle consiste à lire un fichier, un flux de données ou une variable ligne par ligne.

Voici un exemple qui lit le /etc/passwd fichier ligne par ligne et imprime chaque ligne :

file=/etc/passwd

while read -r line; do
  echo $line
done < "$file"

Au lieu de contrôler le while boucle avec une condition, nous utilisons la redirection d'entrée (< "$file" ) pour passer un fichier au read commande qui contrôle la boucle. Le while la boucle s'exécutera jusqu'à ce que la dernière ligne soit lue.

Lors de la lecture du fichier ligne par ligne, utilisez toujours read avec le -r option pour empêcher la barre oblique inverse d'agir comme un caractère d'échappement.

Par défaut, le read La commande supprime les caractères d'espacement de début/fin (espaces et tabulations). Utilisez le IFS= option avant read pour éviter ce comportement :

file=/etc/passwd

while IFS= read -r line; do
  echo $line
done < "$file"

break et continue Relevés #

La break et continue Les instructions peuvent être utilisées pour contrôler l'exécution de la boucle while.

break Relevé #

La break L'instruction termine la boucle en cours et passe le contrôle du programme à la commande qui suit la boucle terminée. Il est généralement utilisé pour terminer la boucle lorsqu'une certaine condition est remplie.

Dans l'exemple suivant, l'exécution de la boucle sera interrompue dès que la rubrique itérée courante sera égale à 2 .

i=0

while [ $i -lt 5 ]
do
  echo "Number: $i"
  ((i++))
  if [[ "$i" == '2' ]]; then
    break
  fi
done

echo 'All Done!'
Number: 0
Number: 1
All Done!

continue Relevé #

Le continue L'instruction quitte l'itération actuelle d'une boucle et passe le contrôle du programme à l'itération suivante de la boucle.

Dans ce qui suit ci-dessous, une fois que l'élément itéré courant est égal à 2 le continue fera revenir l'exécution au début de la boucle et continuer avec l'itération suivante.

i=0

while [ $i -lt 5 ]
do
  ((i++))
  if [[ "$i" == '2' ]]; then
    continue
  fi
  echo "Number: $i"
done

echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!

Conclusion #

Le while loop exécute à plusieurs reprises un ensemble donné de commandes tant qu'une condition est vraie.

Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.


Linux
  1. Comment écrire une boucle dans Bash

  2. Bash For Loop Guide et exemples

  3. Script Linux :3 tutoriels pour les boucles while dans Bash

  4. Paralléliser une boucle Bash For ?

  5. Exemples de boucle Bash For et de boucle While

Bash pour la boucle

Bash jusqu'à la boucle

Bash pause et continuer

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

La boucle while dans les scripts shell

La boucle Bash FOR expliquée et simplifiée