2016-06-13 72 views
1

我的代碼如下所示:continue語句在PowerShell中混亂的,看起來像break語句

1..10 | % { 
    $i=$_ 
    10..20 | % { 
     if ($_ -gt 12) { 
      continue 
     } 
     Write-Host $i $_ 
    } 
} 

爲什麼輸出是:

1 10 
1 11 
1 12 

似乎在PoweShell的continue說法是不與其他語言不同,爲什麼PowerShell是這樣設計的?

如果我改變continuereturn,然後我得到了期望的結果。

+1

你沒有循環繼續下去。 – PetSerAl

+1

的可能的複製[爲什麼繼續表現得像在foreach - 對象破?](http://stackoverflow.com/questions/7760013/why-does-continue-behave-like-break-in-a-foreach-object ) –

回答

2

由於PeterSerAI在他comment指出的那樣,你不要在代碼中使用一個循環,你是不是使用Foreach-Object cmdlet的是different

只需使用一個foreach循環,而不是:

foreach($obj in 1.. 10) 
{ 
    $i = $obj 
    foreach($obj2 in 10 ..20) { 
     if ($obj2 -gt 12) { 
      continue 
     } 
     Write-Host $obj $obj2 
    } 
}