vik*_*ata 1 powershell pipeline break
我有这个脚本:
1..10|%{
$_
if(($_ % 3) -eq 0)
{
"wow"
break
}
}
"hello"
Run Code Online (Sandbox Code Playgroud)
我期望从1到10,在遇到3时会显示“哇”,最后显示“你好”,但实际输出是:
1
2
3
kkk
Run Code Online (Sandbox Code Playgroud)
因此,“ break”似乎没有破坏管道中的%{}循环,而是破坏了整个程序?如何在继续执行后续语句的同时中断循环?
谢谢。
ForEach-Object和foreach循环是不同的。如果使用后者,则所有功能均应按预期工作。
foreach ($n in (1..10)){
$n
if(($n % 3) -eq 0)
{
"wow";
break;
}
}
"hello"
Run Code Online (Sandbox Code Playgroud)
输出将是
1
2
3
wow
hello
Run Code Online (Sandbox Code Playgroud)
UPD:您可以在此处阅读有关这些差异的一些有用信息。需要注意的主要Foreach-Object是将集成到管道中,它基本上是process内部带有块的函数。该foreach是一个语句。自然,break可以表现不同。
| 归档时间: |
|
| 查看次数: |
958 次 |
| 最近记录: |