我无法在我正在使用的 Powershell 脚本中使用简单的 switch 语句。以前一直使用嵌套if,想要清理一下。代码如下。
当我在调试中通过 Powershell ISE 并评估测试(例如$_ -match 'match1')时,它确实根据 的值评估为 true $mystring。但是,它似乎永远无法正确执行与 Switch 块中该值关联的代码。我确信我错过了一些明显的东西,并感谢任何指导。希望我的描述有意义。我正在运行 v5.1。
Switch ($myString)
{
($_ -match 'match1') { somecodeblock }
($_ -match 'match2') { somecodeblock }
($_ -match 'match3') { somecodeblock }
($_ -match 'match3') { somecodeblock }
($_ -match 'match4') { somecodeblock }
($_ -match 'match4') { somecodeblock }
}
Run Code Online (Sandbox Code Playgroud)
正确的语法是在使用 $_ 时在测试周围使用花括号(您当前正在使用括号):
Switch ($myString)
{
{$_ -match 'match1'} {somecodeblock}
}
Run Code Online (Sandbox Code Playgroud)
当您不使用 $_ 时,可以从测试中完全省略它们,如果您使用 -wildcard 参数,则可以这样做:
Switch -wildcard ($myString)
{
'*match1*' {somecodeblock}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13127 次 |
| 最近记录: |