$arr = @(1..10)
$arr | ForEach-Object {
if ($_ -eq 5) { continue }
"output $_"
}
结果:
output 1 output 2 output 3 output 4
$arr = @(1..10)
$arr | ForEach-Object {
if ($_ -eq 5) { break }
"output $_"
}
结果:
output 1 output 2 output 3 output 4
为什么?
答案 0 :(得分:16)
因为continue
和break
用于循环而foreach-object
是cmdlet。行为并不是您所期望的,因为它只是停止整个脚本(在原始代码之后添加一条语句,您将看到该语句不会运行)
要获得与foreach循环中使用的继续相似的效果,您可以使用return
:
$arr = @(1..10)
$arr | ForEach-Object {
if ($_ -eq 5){ return}
"output $_"
}
答案 1 :(得分:6)
这是因为continue应用于foreach循环($ collection中的foreach $ item)而不是foreach-object cmdlet。试试这个:
$arr = @(1..10)
$arr | ForEach-Object {
if ($_ -eq 5){ return}
"output $_"
}
和此:
$arr = @(1..10)
ForEach ($i in $arr) {
if ($i -eq 5){ continue}
"output $i"
}