Unix / Linux - Shell Loop Control

In diesem Kapitel werden wir die Shell-Loop-Steuerung unter Unix diskutieren. Bisher haben Sie sich mit dem Erstellen von Schleifen und dem Arbeiten mit Schleifen befasst, um verschiedene Aufgaben zu erfüllen. Manchmal müssen Sie eine Schleife stoppen oder Iterationen der Schleife überspringen.

In diesem Kapitel lernen wir die folgenden zwei Anweisungen kennen, mit denen Shell-Schleifen gesteuert werden

  • Das break Erklärung

  • Das continue Erklärung

Die Endlosschleife

Alle Schleifen haben eine begrenzte Lebensdauer und werden ausgegeben, sobald die Bedingung je nach Schleife falsch oder wahr ist.

Eine Schleife kann für immer fortgesetzt werden, wenn die erforderliche Bedingung nicht erfüllt ist. Eine Schleife, die für immer ausgeführt wird, ohne zu beenden, wird unendlich oft ausgeführt. Aus diesem Grund werden solche Schleifen als Endlosschleifen bezeichnet.

Beispiel

Hier ist ein einfaches Beispiel, das das verwendet while Schleife, um die Zahlen Null bis Neun anzuzeigen -

#!/bin/sh

a=10

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

Diese Schleife dauert für immer an, weil a ist immer greater than oder equal to 10 und es ist nie weniger als 10.

Die break-Anweisung

Das breakDie Anweisung wird verwendet, um die Ausführung der gesamten Schleife zu beenden, nachdem alle Codezeilen bis zur break-Anweisung ausgeführt wurden. Anschließend wird der Code nach dem Ende der Schleife angezeigt.

Syntax

Folgende break Anweisung wird verwendet, um aus einer Schleife herauszukommen -

break

Der Befehl break kann auch verwendet werden, um eine verschachtelte Schleife mit diesem Format zu verlassen -

break n

Hier n gibt die an nth umschließende Schleife zum Ausgang von.

Beispiel

Hier ist ein einfaches Beispiel, das zeigt, dass die Schleife sofort beendet wird a wird 5 -

#!/bin/sh

a=0

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

Bei der Ausführung erhalten Sie folgendes Ergebnis:

0
1
2
3
4
5

Hier ist ein einfaches Beispiel für eine verschachtelte for-Schleife. Dieses Skript bricht aus beiden Schleifen aus, wennvar1 equals 2 und 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

Nach der Ausführung erhalten Sie das folgende Ergebnis. In der inneren Schleife haben Sie einen Befehl break mit dem Argument 2. Dies gibt an, dass Sie, wenn eine Bedingung erfüllt ist, aus der äußeren Schleife und letztendlich auch aus der inneren Schleife ausbrechen sollten.

1 0
1 5

Die continue-Anweisung

Das continue Aussage ist ähnlich wie die break Befehl, außer dass dadurch die aktuelle Iteration der Schleife beendet wird und nicht die gesamte Schleife.

Diese Anweisung ist nützlich, wenn ein Fehler aufgetreten ist, Sie jedoch versuchen möchten, die nächste Iteration der Schleife auszuführen.

Syntax

continue

Wie bei der break-Anweisung kann dem Befehl continue ein ganzzahliges Argument gegeben werden, um Befehle aus verschachtelten Schleifen zu überspringen.

continue n

Hier n gibt die an nth Umschließende Schleife, um fortzufahren.

Beispiel

Die folgende Schleife verwendet die continue Anweisung, die von der continue-Anweisung zurückkehrt und mit der Verarbeitung der nächsten Anweisung beginnt -

#!/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

Bei der Ausführung erhalten Sie folgendes Ergebnis:

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