代码之家  ›  专栏  ›  技术社区  ›  Daniel Müller

Powershell中的Jenkins(管道)布尔参数

  •  1
  • Daniel Müller  · 技术社区  · 2 年前

    我有一个参数化的Jenkins管道脚本,其中我传递了一个布尔参数“isModuleUpdate”。

    当我在管道脚本中使用这个参数时,会得到令人困惑的结果。 我的剧本:

     Write-Host ">>> isModuleUpdate as String: $Env:isModuleUpdate"
     Write-Host ">>> isModuleUpdate as Variable: " $Env:isModuleUpdate
     if ($Env:isModuleUpdate) {
          Write-Host ">>> ModuleUpdate is checked!"
     }
    

    当我运行脚本时,结果是:

    >>> isModuleUpdate as String: false
    >>> isModuleUpdate as Variable: false
    >>> ModuleUpdate is checked!
    

    正确检查这个变量最性感的方法是什么?

    2 回复  |  直到 2 年前
        1
  •  0
  •   M B    2 年前

    我记得在PowerShell中检查布尔值时也有问题。最终 -eq $true 工作:

     if ($Env:isModuleUpdate -eq $true) {
    
        2
  •  0
  •   stackprotector    2 年前

    从…起 about_Environment_Variables :

    与PowerShell中其他类型的变量不同,环境变量始终存储为字符串,不能为空。

    你的 if 语句的计算结果为 true ,因为字符串变量不是空的。换句话说,它包含字符串 false 而不是布尔值。请执行适当的字符串比较:

    if ($Env:isModuleUpdate -like 'true') {...