Jenkins(管道)Powershell 中的布尔参数令人困惑
Jenkins (Pipeline) Boolean Parameter in Powershell confusing
我有一个参数化的 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!
正确检查这个变量最性感的方法是什么?
我记得在 PowerShell 中检查布尔值时也遇到过问题。最终,-eq $true
成功了:
if ($Env:isModuleUpdate -eq $true) {
来自about_Environment_Variables:
Environment variables, unlike other types of variables in PowerShell, are always stored as a string and can't be empty.
您的 if
语句的计算结果为 true
,因为您的字符串变量不为空。换句话说,它包含字符串 false
而不是布尔值。改为进行适当的字符串比较:
if ($Env:isModuleUpdate -like 'true') {...
我有一个参数化的 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!
正确检查这个变量最性感的方法是什么?
我记得在 PowerShell 中检查布尔值时也遇到过问题。最终,-eq $true
成功了:
if ($Env:isModuleUpdate -eq $true) {
来自about_Environment_Variables:
Environment variables, unlike other types of variables in PowerShell, are always stored as a string and can't be empty.
您的 if
语句的计算结果为 true
,因为您的字符串变量不为空。换句话说,它包含字符串 false
而不是布尔值。改为进行适当的字符串比较:
if ($Env:isModuleUpdate -like 'true') {...