在PowerShell中,是否有一种方法可以通过单个开关匹配来针对多个条件?

ioekq8ef  于 2023-02-04  发布在  Shell
关注(0)|答案(2)|浏览(145)

在一个示例脚本中,如果变量匹配1,我希望执行一个代码块;如果匹配2、3、5或8,我希望执行另一个代码块;如果匹配4、6或7,我希望执行另一个代码块。
我想这样做:

switch($x)
{
    1 {'Condition 1'}
    2 -or 3 -or -5 -or 8 {'Condition 2'}
    4 -or 6 -or 7 {'Condition 3'}
}

但是这并不管用,有没有一种方法可以用switch来完成这类工作,而不必单独地拼写出所有8个选项,或者多个if语句是唯一的方法?

m1m5dgzv

m1m5dgzv1#

另一个选项,如果您想将值视为数字而不是字符串:

switch ($x)
{
    1                {'Condition 1'}
    {$_ -in 2,3,5,8} {'Condition 2'}
    {$_ -in 4,6,7}   {'Condition 3'}
}
yyyllmsg

yyyllmsg2#

您可以使用-Regex选项并执行以下操作:

switch -Regex ($x)
{
  '1'       {'Condition 1'}
  '[2358]'  {'Condition 2'}
  '[467]'   {'Condition 3'}
}

相关问题