Unix / Linux - Contrôle de la boucle du shell

Dans ce chapitre, nous aborderons le contrôle de la boucle du shell sous Unix. Jusqu'à présent, vous avez envisagé de créer des boucles et de travailler avec des boucles pour accomplir différentes tâches. Parfois, vous devez arrêter une boucle ou sauter des itérations de la boucle.

Dans ce chapitre, nous allons apprendre les deux instructions suivantes qui sont utilisées pour contrôler les boucles du shell -

  • le break déclaration

  • le continue déclaration

La boucle infinie

Toutes les boucles ont une durée de vie limitée et elles sortent une fois que la condition est fausse ou vraie selon la boucle.

Une boucle peut continuer indéfiniment si la condition requise n'est pas remplie. Une boucle qui s'exécute indéfiniment sans se terminer s'exécute un nombre infini de fois. Pour cette raison, de telles boucles sont appelées boucles infinies.

Exemple

Voici un exemple simple qui utilise le while boucle pour afficher les nombres de zéro à neuf -

#!/bin/sh

a=10

until [ $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

Cette boucle continue pour toujours car a est toujours greater than ou equal to 10 et ce n'est jamais moins de 10.

La déclaration de rupture

le breakL'instruction est utilisée pour terminer l'exécution de la boucle entière, après avoir terminé l'exécution de toutes les lignes de code jusqu'à l'instruction break. Il passe ensuite au code après la fin de la boucle.

Syntaxe

Le suivant break instruction est utilisée pour sortir d'une boucle -

break

La commande break peut également être utilisée pour sortir d'une boucle imbriquée en utilisant ce format -

break n

Ici n spécifie le nth boucle englobante à la sortie de.

Exemple

Voici un exemple simple qui montre que la boucle se termine dès que a devient 5 -

#!/bin/sh

a=0

while [ $a -lt 10 ]
do
   echo $a
   if [ $a -eq 5 ]
   then
      break
   fi
   a=`expr $a + 1`
done

Lors de l'exécution, vous recevrez le résultat suivant -

0
1
2
3
4
5

Voici un exemple simple de boucle for imbriquée. Ce script sort des deux boucles sivar1 equals 2 et var2 equals 0 -

#!/bin/sh

for var1 in 1 2 3
do
   for var2 in 0 5
   do
      if [ $var1 -eq 2 -a $var2 -eq 0 ]
      then
         break 2
      else
         echo "$var1 $var2"
      fi
   done
done

Lors de l'exécution, vous recevrez le résultat suivant. Dans la boucle interne, vous avez une commande break avec l'argument 2. Cela indique que si une condition est remplie, vous devez sortir de la boucle externe et finalement de la boucle interne également.

1 0
1 5

La déclaration continue

le continue est similaire à la break commande, sauf qu'elle provoque la sortie de l'itération actuelle de la boucle, plutôt que la boucle entière.

Cette instruction est utile lorsqu'une erreur s'est produite mais que vous souhaitez essayer d'exécuter la prochaine itération de la boucle.

Syntaxe

continue

Comme avec l'instruction break, un argument entier peut être donné à la commande continue pour ignorer les commandes des boucles imbriquées.

continue n

Ici n spécifie le nth boucle englobante à partir de laquelle continuer.

Exemple

La boucle suivante utilise le continue instruction qui revient de l'instruction continue et commence le traitement de l'instruction suivante -

#!/bin/sh

NUMS="1 2 3 4 5 6 7"

for NUM in $NUMS
do
   Q=`expr $NUM % 2`
   if [ $Q -eq 0 ]
   then
      echo "Number is an even number!!"
      continue
   fi
   echo "Found odd number"
done

Lors de l'exécution, vous recevrez le résultat suivant -

Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number