继续语句在PowerShell中令人困惑,看起来像中断语句



我的代码看起来像:

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

为什么输出是:

1 10
1 11
1 12

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

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

正如PeterSerAI在他的评论中指出的那样,您没有在代码中使用循环,而是使用不同的Foreach-Object cmdlet。

只需改用foreach循环:

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

相关内容

最新更新