使用 PowerShell 三元运算符简化条件逻辑

如果/那么结构在PowerShell代码中很常见,但您知道还有另一种称为三元运算符的方式,它可以使您的如果/那么结构更加简洁吗?让我们学习如何构建自定义的PowerShell三元运算符。

有人说,以可读性为代价,三元运算符构建的条件逻辑更加简洁、简单,并且代码更少。他们是正确的,但在PowerShell中拥有类似三元运算符的行为真是太棒了!

如果您不熟悉三元运算符,它基本上是使用哈希表或类似结构根据条件进行决策。

在PowerShell中的If/Then

为了解释PowerShell的三元运算符,让我们首先以一个if/then结构的示例开始。

$CarColor = 'Blue'
if ($CarColor -eq 'Blue') {
    'The car color is blue'
} else {
    'The car color is not blue'
}

乍一看,您可能认为它没有任何问题。实际上,确实没有,但通过一行代码(在我的个人字符限制下为115个字符)同样可以轻松测试这个条件。

现在,使用两个键构建PowerShell哈希表;$true$false。然后,根据您定义的条件,设置这些键对应的值。

@{ $true = 'The car color is blue'; $false = 'The car color is not blue' }
[$CarColor -eq 'Blue']

接下来,定义条件($CarColor为Blue),并使用$CarColor -eq 'Blue'检查是否满足该条件。

$CarColor = 'Blue'
@{ $true = 'The car color is blue'; $false = 'The car color is not blue'}
$CarColor -eq 'Blue'

现在将条件($CarColor -eq 'Blue')作为散列表中的键。这样做会执行检查,然后使用结果查找散列表中的键。

完成PowerShell三元运算符

$CarColor = 'Blue'
@{ $true = 'The car color is blue'; $false = 'The car color is not blue'}[$CarColor -eq 'Blue']
A custom PowerShell ternary operator

一行代码!这不是更为简洁吗?我使用散列表和基于$CarColor是否等于Blue的查找,而不是使用if/then语句。然后将结果输出到控制台。如果你想使用这种方法,只需填写这些空白:

@{$true = $ResultyouwanttodoifTrue; $false = $ResultyouwantifFalse}[]

如果愿意,你还可以包含不止$true$false。你可以添加任意数量的条件到散列表中并检查它们。这是一种简单的方法,可以替代冗长的if/then语句或switch语句。

现在,你拥有了一个定制的PowerShell三元运算符,可以立即在你的脚本中使用!

Source:
https://adamtheautomator.com/powershell-ternary/