You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell的switch语句中修改匹配值后继续匹配?

PowerShell Switch 实现修改变量后重新匹配分支的解决方法

PowerShell 的 switch 语句默认仅基于初始传入的值进行分支匹配,执行完匹配的分支后就会退出整个 switch 块,不会自动重新评估修改后的变量值——这就是你提供的代码只执行0分支的核心原因。要实现修改变量后让后续分支继续匹配的效果,无法通过原生 switch 的参数实现,推荐用循环包裹 switch 的方式解决:

解决方法:循环包裹 Switch

使用 do-while 循环每次将更新后的变量传入 switch,直到触发退出条件:

$varInt = 0

do {
    switch ($varInt) {
        0 {
            Write-Host "It's zero. Incrementing to one."
            $varInt++
        }
        1 {
            Write-Host "Incremented to one. Moving to two."
            $varInt++
        }
        2 {
            Write-Host "Incremented to two, exiting"
        }
    }
} while ($varInt -lt 2)

Write-Host "Final counter is $varInt"

执行流程说明

  1. 首次循环:$varInt 为0,匹配0的分支,执行后变量变为1
  2. 检查循环条件 $varInt -lt 2 成立,进入第二次循环
  3. 第二次循环:$varInt 为1,匹配1的分支,执行后变量变为2
  4. 检查循环条件不成立,退出循环
  5. 最后输出最终变量值

执行后会得到你预期的输出:

  • It's zero. Incrementing to one.
  • Incremented to one. Moving to two.
  • Incremented to two, exiting
  • Final counter is 2

内容的提问来源于stack exchange,提问作者seagull

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:07:10