2016-10-12 22 views
2

是否有更简单的方法来指定-or条件?例如,if ($returnValue -eq 0 -or $returnValue -eq 5)。我宁愿写一些类似于if ($returnValue -eq 0 -or 5)的东西来测试$ returnValue的两个可能值。当然,这是做别的。 好吧,只是想到使用正则表达式将值强制转换为字符类型: if ($returnValue -match '0|5') 那么,现在我已经回答了我的问题,还有其他想法?更简单的Powershell OR条件语法

+1

更简单还是更钝? –

回答

4

我会用-contains-in酌情:

if ((0,5) -contains $returnValue) 

if ($returnValue -in (0,5)) 

-in使用PowerShell v3的加入。

我高度不鼓励正则表达式“解决方案”,因为它可能会产生意想不到的副作用并降低清晰度。例如51 -match '0|5'$true

考虑只格式化多条线路上的if声明:

if (
    $returnValue -eq 0 -or 
    $returnValue -eq 5 
) 

虽然我还是喜欢-contains-in你想达到的目标。

$validVals = @(
    0, 
    5, 
    17 
) 

if ($validVals -contains $returnVal) { 
    # ... 
} 

if ($returnVal -in $validVals) { 
    # ... 
} 
+0

我同意正则表达式解决方案不适合这个。谢谢。 – Roman