Powershell 脚本 - 如何使用更少的 IF / IF-ELSE 语句

问题描述 投票:0回答:1

我主要使用 PowerShell 编写代码,我 85% 的脚本都是用它构建的。我继续编写代码的次数越多,我就越意识到我总是使用 IF 语句,公平地说,有时需要这样做,但由于我在代码中进行了大量检查和抛出,我发现我的脚本充满了这些语句。我可以采取什么不同的逻辑方法?

我尝试在线查找并找到了三元运算符,但无法找到 PowerShell 的良好文档。

powershell if-statement syntax scripting logic
1个回答
0
投票

假设您使用的是 PowerShell (Core) 7+,您可以使用以下结构来避免在简单情况下需要

if
语句:

  • ?:
    三元条件运算符

    # Alternative to:
    #   $foo = if ($true) { 'bar' } else { 'baz' }
    $foo = $true ? 'bar' : 'baz'
    
  • ??
    空合并运算符

    # Alternative to:
    #   $foo = if ($null -ne $possiblyNull) { $possiblyNull } else { 'default' }
    $foo = $possiblyNull ?? 'default'
    
  • ?.
    空条件运算符

    # Alternative to:
    #   if ($null -ne $possiblyNull) { $possiblyNull.ToString() } 
    ${possiblyNull}?.ToString()
    
    • 请注意 - 不幸的是 - 需要将变量名称包含在
      {...}
      中才能使
      ?.
      按预期工作,因为 - 令人惊讶的是 -
      ?
      是 PowerShell 变量名称中的合法字符。
    • GitHub #11379 要求取消这个模糊的要求,基于分析表明只有很少的现有代码(如果有的话)会受到将尾随
      ?
      解释为
      ?.
      的一部分而不是作为变量名的一部分。可悲的是,尽管声称要重新审视这个问题 - 请参阅GitHub 问题 #14025 - 没有采取任何行动。
© www.soinside.com 2019 - 2024. All rights reserved.