powershell中的continue语句令人困惑,看起来像break语句

时间:2016-06-13 03:51:33

标签: powershell syntax continue

我的代码如下:

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

为什么输出是:

1 10
1 11
1 12

PoweShell中的continue语句似乎与其他语言没有什么不同,为什么PowerShell的设计是这样的呢?

如果我将continue更改为return,那么我会得到预期结果。

1 个答案:

答案 0 :(得分:2)

正如PeterSerAI在他的comment中指出的那样,在代码中不使用循环,而是使用Foreach-Object cmdlet {{3} }。

只需使用foreach循环:

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