about_Continue

Rövid leírás

Azt ismerteti, hogy az continue utasítás hogyan adja vissza azonnal a programfolyamatot egy programhurok, utasítás switch vagy utasítás elejére trap .

Hosszú leírás

Az continue utasítással kiléphet az aktuális vezérlőblokkból, de folytathatja a végrehajtást a teljes kilépés helyett. Az utasítás támogatja a címkéket. A címke egy szkriptben lévő utasításhoz hozzárendelt név.

Folytatás használata hurkokban

A címkézetlen continue utasítás azonnal visszaadja a programfolyamatot a legbelső hurok tetejére, amelyet egy for, foreach, dovagy while utasítás vezérel. A ciklus aktuális iterációja leáll, és a hurok a következő iterációval folytatódik.

Az alábbi példában a programfolyamat a ciklus elejére while tér vissza, ha a $ctr változó értéke 5. Ennek eredményeként az 1 és 10 közötti számok az 5 kivételével jelennek meg:

while ($ctr -lt 10)
{
    $ctr += 1
    if ($ctr -eq 5)
    {
        continue
    }

    Write-Host -Object $ctr
}

Hurok használata esetén for a végrehajtás az <Repeat> utasításnál folytatódik, majd a <Condition> teszt következik. Az alábbi példában a végtelen ciklus nem fog bekövetkezni, mert a hiba a $i kulcsszó után continue következik be.

#   <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--
    }
}

A címkézett folytatás használata hurokban

A címkézett continue utasítás leállítja az iteráció végrehajtását, és átviszi a vezérlést a célként megadott iterációra vagy switch utasításcímkére.

Az alábbi példában a legbelső for érték akkor fejeződik be, ha $condition igaz, és az iteráció a második for ciklussal folytatódik a következő időpontbanlabelB: .

: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
            }
        }
    }
}

Folytatás használata kapcsolóutasításban

Egy címkézetlen continue utasítás az switch aktuális switch iteráció végrehajtását leállítja, és a vezérlőt a switch felső sarokba továbbítja a következő bemeneti elem lekéréséhez.

Ha egyetlen bemeneti elem continue van, a teljes switch utasítás kilép. Ha a switch bemenet gyűjtemény, a switch gyűjtemény minden elemét teszteli. A continue folyamat kilép az aktuális iterációból, és a switch következő elemmel folytatódik.

switch (1,2,3) {
  2 { continue }  # moves on to the next element, 3
  default { $_ }
}
1
3

Folytatás használata trap utasításban

Ha a törzsben végrehajtott utolsó utasítás az trap utasítás continue, a rendszer csendben figyelmen kívül hagyja a beszorult hibát, és a végrehajtás az azt követő utasítással folytatódik, amely közvetlenül az okozott trap hibát követi.

Ne használja a folytatást hurkon, kapcsolón vagy trapen kívül

Ha continue olyan szerkezeten kívül használják, amely közvetlenül támogatja azt (hurkok, switch), trapa PowerShell megkeresi a hívásvermet egy belefoglaló szerkezethez. Ha nem talál belefoglaló szerkezetet, az aktuális futtatótér csendesen leáll.

Ez azt jelenti, hogy azok a függvények és szkriptek, amelyek véletlenül egy külső szerkezetet használnakcontinue, amely támogatja azt, véletlenül leállíthatják a hívóikat.

Ha continue egy folyamaton belül, például egy ForEach-Object szkriptblokkon belül használja, nem csak kilép a folyamatból, hanem a teljes futtatókörnyezetet is leállítja.

Lásd még