【问题标题】:Powershell: "break" seems to end whole program, not just a loop?Powershell:“break”似乎结束了整个程序,而不仅仅是一个循环?
【发布时间】:2015-08-25 10:47:39
【问题描述】:

我有这个脚本:

1..10|%{
    $_
    if(($_ % 3) -eq 0)
    {
     "wow"
     break
    }
}

"hello"

我希望从 1 到 10,当遇到 3 时它会打印“wow”,最后会打印“hello” 但实际输出是:

1
2
3
kkk

所以“break”似乎不是破坏管道中的 %{} 循环,而是破坏了整个程序?如何在循环中中断,同时继续执行后面的语句?

谢谢。

【问题讨论】:

标签: powershell break pipeline


【解决方案1】:

ForEach-Objectforeach 循环不同。如果你使用后者,一切都应该如你所愿。

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 的行为会有所不同。

【讨论】:

    猜你喜欢
    • 2018-03-03
    • 1970-01-01
    • 2014-10-26
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多