我有这个脚本:
1..10|%{
$_
if(($_ % 3) -eq 0)
{
"wow"
break
}
}
"hello"
我期望从1到10,在遇到3时会显示“哇”,最后显示“你好”
但是实际输出是:
1
2
3
kkk
因此,“break”似乎没有破坏管道中的%{}循环,而是破坏了整个程序?如何在继续执行后续语句的同时中断循环?
谢谢。
最佳答案
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
的行为可能有所不同。关于powershell - Powershell: “break”似乎结束了整个程序,而不仅仅是循环?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30752010/