Jen*_*nte 13 powershell foreach break
我在Powershell中遇到了嵌套ForEach循环的麻烦.首先,我需要遍历列表1.对于列表1中的每个对象,我需要遍历列表2.当我在列表2中找到类似对象时,我想转到列表1中的下一个对象.
我试过休息,我试过继续,但它对我不起作用.
Function checkLists() {
ForEach ($objectA in $listA) {
ForEach ($objectB in $listB) {
if ($objectA -eq $objectB) {
// Do something
// goto next object in list A and find the next equal object
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
a)在PowerShell中中断/继续完成的内容是什么?
b)我应该如何夸大我的'问题'?
von*_*ryz 11
使用如下所述的标签get-help about_break:
A Break statement can include a label. If you use the Break keyword with
a label, Windows PowerShell exits the labeled loop instead of exiting the
current loop
Run Code Online (Sandbox Code Playgroud)
像这样,
foreach ($objectA in @("a", "e", "i")) {
"objectA: $objectA"
:outer
foreach ($objectB in @("a", "b", "c", "d", "e")) {
if ($objectB -eq $objectA) {
"hit! $objectB"
break :outer
} else { "miss! $objectB" }
}
}
#Output:
objectA: a
hit! a
objectA: e
miss! a
miss! b
miss! c
miss! d
hit! e
objectA: i
miss! a
miss! b
miss! c
miss! d
miss! e
Run Code Online (Sandbox Code Playgroud)
这是使用中断/继续的示例。反转内部循环中的测试,并使用 Continue 保持循环运行,直到测试失败。一旦命中,它就会中断内循环,并返回到外循环中的下一个对象。
foreach ($objectA in @("a", "e", "i"))
{
"objectA: $objectA"
foreach ($objectB in @("a", "b", "c", "d", "e")) {
if ($objectB -ne $objectA)
{
"miss! $objectB"
continue
}
else {
"hit! $objectB"
break
}
}
}
objectA: a
hit! a
objectA: e
miss! a
miss! b
miss! c
miss! d
hit! e
objectA: i
miss! a
miss! b
miss! c
miss! d
miss! e
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50842 次 |
| 最近记录: |