【问题标题】:Execute if condition where all elements are in variables in PowerShell执行 if 条件,其中所有元素都在 PowerShell 中的变量中
【发布时间】:2021-03-09 17:10:04
【问题描述】:

对不起,我的英语不好,我正在将 Unix shell 代码翻译成 PowerShell,我得到了 Unix 代码,其中 if 语句只使用如下变量: if( $val1 $op $val2)... 谁能告诉我Powershell中是否有类似的方法可以做到这一点? 我不想使用 switch 来验证每个运算符。

谢谢¡

【问题讨论】:

  • If($val1 -and $op -and $val2){...}

标签: powershell logical-operators


【解决方案1】:

您正在寻找的确切参考是命令: Get-Help about_Logical_Operators 有几十篇详细的文章解释了 PowerShell 如何处理某些概念的详细信息。您可以通过Get-Help about获取整个列表

来自 about_Logical_Operators 文章:

    Operator  Description                      Example
    --------  ------------------------------   ------------------------
    -and      Logical and. TRUE only when      (1 -eq 1) -and (1 -eq 2)
              both statements are TRUE.         False

与您的示例代码等效的 PowerShell 可能如下所示:

$val1 = $True
$op = 1
$val2 = "Not Empty"
if ($val1 -and $op -and $val2)
   {
   Write-Host "All three conditions are true!"
   }

【讨论】:

  • 哦,也许我没有解释得那么好,我的问题是我有一个具有运算符的变量,例如:$MyOp = "-le" 我有 2 个这样的变量:$var1 = 5, $var2=6,所以我必须以这种方式制作一个类似“动态”的 if: if( $var1 $MyOp $var2) {} ..
  • 哦!我现在完全明白了!您想让布尔运算符本身成为一个变量。现在回头看变量名就很明显了。
  • 我的猜测是您可以使用 Invoke-Expression 执行此操作,但我现在无法测试。小心那个命令行开关。如果恶意用户能够将自己的代码放入变量中,它可能会被执行。
猜你喜欢
  • 2015-07-11
  • 1970-01-01
  • 2018-09-18
  • 1970-01-01
  • 1970-01-01
  • 2016-09-12
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多