gpt4 book ai didi

powershell - 如何在 Powershell 中打破嵌套的 foreach 循环

转载 作者:行者123 更新时间:2023-12-02 23:38:07 25 4
gpt4 key购买 nike

我有两个长度相同的列表。我需要迭代,以便列表 A 中的第一项与列表 B 中的第一项匹配。为此,我创建了一个嵌套的 foreach 循环,如下所示:

$nodes_table = "a","b","c"
$nodes_list = "a","b","c"

:Outer foreach ($item in $nodes_table) {
foreach($node in $nodes_list)
{
if($node -eq $item)
{
Write-Output "$node hostname matches in vTM"
break :Outer
}
}
}

问题:在第一次迭代中,它匹配。但是在第二次迭代中,内循环并没有转到第二个项目,它再次重置。

First iteration: $node = a equals $item = a
Second iteration: $node = a not equals to $item = b.

如您所见,在第二次迭代中,内部循环没有迭代,它重置回 a。

最佳答案

这里有两个问题。首先,如果您有一个像:Outer foreach(... 这样的标签,那么当您在 break 中引用它时,标签的名称就是 Outer code> 语句,你指定 break Outer 而不是 break :Outer (可能只是一个错字)。其次,你需要使用 continue 语句而不是 break 语句。continue 语句在下一次迭代中恢复执行。更新后的代码如下所示:

$nodes_table = "a","b","c"
$nodes_list = "a","b","c"

:Outer foreach ($item in $nodes_table) {
foreach($node in $nodes_list)
{
if($node -eq $item)
{
Write-Output "$node hostname matches in vTM"
continue Outer
}
}
}

关于powershell - 如何在 Powershell 中打破嵌套的 foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50049483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com