$arr = @(1..10)
$arr | ForEach-Object {
if ($_ -eq 5) { continue }
"output $_"
}
Run Code Online (Sandbox Code Playgroud)
结果:
output 1 output 2 output 3 output 4
$arr = @(1..10)
$arr | ForEach-Object {
if ($_ -eq 5) { break }
"output $_"
}
Run Code Online (Sandbox Code Playgroud)
结果:
output 1 output 2 output 3 output 4
为什么?
man*_*lds 17
因为continue并且break是用于循环并且foreach-object是cmdlet.行为并不是您所期望的,因为它只是停止整个脚本(在原始代码之后添加一个语句,您将看到该语句不会运行)
要获得与foreach循环中使用的继续相似的效果,您可以使用return:
$arr = @(1..10)
$arr | ForEach-Object {
if ($_ -eq 5){ return}
"output $_"
}
Run Code Online (Sandbox Code Playgroud)
这是因为continue应用于foreach循环($ collection中的foreach $ item)而不是foreach-object cmdlet.试试这个:
$arr = @(1..10)
$arr | ForEach-Object {
if ($_ -eq 5){ return}
"output $_"
}
Run Code Online (Sandbox Code Playgroud)
还有这个:
$arr = @(1..10)
ForEach ($i in $arr) {
if ($i -eq 5){ continue}
"output $i"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9298 次 |
| 最近记录: |