about_Continue
Kurze Beschreibung
Beschreibt, wie die continue
-Anweisung den Programmfluss sofort an den Anfang einer Programmschleife, einer switch
Anweisung oder einer trap
Anweisung zurückgibt.
Lange Beschreibung
Die continue
-Anweisung bietet eine Möglichkeit, den aktuellen Kontrollblock zu beenden, aber die Ausführung fortzusetzen, anstatt vollständig zu beenden. Die -Anweisung unterstützt Bezeichnungen.
Eine Bezeichnung ist ein Name, den Sie einer Anweisung in einem Skript zuweisen.
Verwenden von Continue in Schleifen
Eine nicht beschriftete continue
Anweisung gibt den Programmfluss sofort an den Anfang der innersten Schleife zurück, die von einer for
- , foreach
, do
- oder while
-Anweisung gesteuert wird. Die aktuelle Iteration der Schleife wird beendet, und die Schleife wird mit der nächsten Iteration fortgesetzt.
Im folgenden Beispiel kehrt der Programmfluss an den Anfang der while
Schleife zurück, wenn die $ctr
Variable gleich 5 ist. Daher werden alle Zahlen zwischen 1 und 10 mit Ausnahme von 5 angezeigt:
while ($ctr -lt 10)
{
$ctr += 1
if ($ctr -eq 5)
{
continue
}
Write-Host -Object $ctr
}
Wenn Sie eine for
Schleife verwenden, wird die Ausführung bei der <Repeat>
-Anweisung fortgesetzt, gefolgt vom <Condition>
Test. Im folgenden Beispiel tritt keine Unendlichkeitsschleife auf, da die Dekrementierung von $i
nach dem continue
Schlüsselwort (keyword) erfolgt.
# <Init> <Condition> <Repeat>
for ($i = 0; $i -lt 10; $i++)
{
Write-Host -Object $i
if ($i -eq 5)
{
continue
# Will not result in an infinite loop.
$i--
}
}
Verwenden eines beschrifteten Continue in einer Schleife
Eine beschriftete continue
Anweisung beendet die Ausführung der Iteration und überträgt das Steuerelement an die zielorientierte eingeschlossene Iteration oder switch
Anweisungsbezeichnung.
Im folgenden Beispiel wird das Innerste for
beendet, wenn $condition
true ist, und die Iteration wird mit der zweiten for
Schleife unter labelB
fortgesetzt.
:labelA for ($i = 1; $i -le 10; $i++) {
:labelB for ($j = 1; $j -le 10; $j++) {
:labelC for ($k = 1; $k -le 10; $k++) {
if ($condition) {
continue labelB
} else {
$condition = Update-Condition
}
}
}
}
Verwenden von continue in einer switch-Anweisung
Eine nicht beschriftete continue
Anweisung in einer switch
beendet die Ausführung der aktuellen switch
Iteration und überträgt das Steuerelement an den Anfang des switch
, um das nächste Eingabeelement abzurufen.
Wenn ein einzelnes Eingabeelement vorhanden ist, continue
wird die gesamte switch
Anweisung beendet.
Wenn es sich bei der switch
Eingabe um eine Auflistung handelt, wird jedes switch
Element der Auflistung getestet. Die continue
beendet die aktuelle Iteration und fährt switch
mit dem nächsten Element fort.
switch (1,2,3) {
2 { continue } # moves on to the next element, 3
default { $_ }
}
1
3
Verwenden von continue in einer Trap-Anweisung
Wenn die letzte Anweisung, die im Textkörper ausgeführt wird, eine trap
Anweisung ist, wird continue
der abgefangene Fehler unbeaufsichtigt ignoriert, und die Ausführung wird mit der Anweisung fortgesetzt, die unmittelbar nach der Anweisung folgt, die aufgetreten trap
ist.
Verwenden Sie continue nicht außerhalb einer Schleife, eines Schalters oder einer Trap.
Wenn continue
außerhalb eines Konstrukts verwendet wird, das es direkt unterstützt (Schleifen, switch
, trap
), sucht PowerShell den Aufrufstapel für ein schließendes Konstrukt. Wenn es kein schließendes Konstrukt finden kann, wird der aktuelle Runspace still beendet.
Dies bedeutet, dass Funktionen und Skripts, die versehentlich ein continue
außerhalb eines eingeschlossenen Konstrukts verwenden, das dies unterstützt, ihre Aufrufer versehentlich beenden können.
Die Verwendung continue
innerhalb einer Pipeline, z. B. eines ForEach-Object
Skriptblocks, beendet nicht nur die Pipeline, sie beendet möglicherweise den gesamten Runspace.