我有这个脚本:
1..10|%{
$_
if(($_ % 3) -eq 0)
{
"wow"
break
}
}
"hello"
我希望从1到10,当遇到3时它打印"哇",最后"你好" 但实际输出是:
1
2
3
kkk
所以"休息"似乎打破了管道中的%{}循环,但打破了整个程序?如何在循环中中断,同时继续执行后面的语句?
谢谢。
答案 0 :(得分:5)
ForEach-Object
和foreach
循环不同。如果您使用后者,一切都应该按预期工作。
foreach ($n in (1..10)){
$n
if(($n % 3) -eq 0)
{
"wow";
break;
}
}
"hello"
输出为
1
2
3
wow
hello
UPD:您可以阅读有关差异here的一些有用信息。需要注意的主要问题是Foreach-Object
已集成到管道中,它基本上是一个内部带有process
块的函数。 foreach
是一个声明。当然,break
的行为可能不同。