Powershell:"break" 似乎结束了整个程序,而不仅仅是一个循环?
Powershell: "break" seems to end whole program, not just a loop?
我有这个脚本:
1..10|%{
$_
if(($_ % 3) -eq 0)
{
"wow"
break
}
}
"hello"
我预计从 1 到 10,当遇到 3 时它打印 "wow",最后 "hello"
但实际输出是:
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
可以有不同的表现。
我有这个脚本:
1..10|%{
$_
if(($_ % 3) -eq 0)
{
"wow"
break
}
}
"hello"
我预计从 1 到 10,当遇到 3 时它打印 "wow",最后 "hello" 但实际输出是:
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
可以有不同的表现。