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