詹金斯管道字符串比较

时间:2021-03-08 11:40:59

标签: jenkins-pipeline

我正在尝试将变量与常量字符串而不是布尔值进行比较。我收到了 null。 我尝试在 String 变量和常量 String 上使用 .trim(),但没有帮助。

def host = sshCommand remote: remote, command: "hostname"
echo "${host}" // this is printing the value

当我将返回值与常量字符串进行比较时,它返回一个 null

例如:

if (host == "host.domain.com")  

if ("${host} == "host.domain.com")  

if ("${host}.equalsIgnorecase("host.domain.com") == "true" )

以上尝试均无效。是否有可能在管道中进行比较?

1 个答案:

答案 0 :(得分:1)

对于您的三个尝试:

if (host == "host.domain.com")

这是正确的,应该可以工作。我们需要在问题中查看更多信息,了解为什么它不起作用,包括周围的代码和有用的调试输出。

if ("${host} == "host.domain.com")

这缺少结束插值引用。像下面这样添加后,它应该可以正常工作,并在必要时隐式地将变量重铸为字符串。

if ("${host}" == "host.domain.com")

对于尝试三:

if ("${host}.equalsIgnorecase("host.domain.com") == "true")

这是将 LHS 上的布尔值与 RHS 上的字符串进行比较。此 == 运算符将始终解析为 false。您可以通过与 RHS 上的布尔值进行比较来解决此问题。此外,host 变量缺少插值引号以重新转换为字符串。您可以通过以下任一方式解决此问题:

if (host.equalsIgnorecase("host.domain.com") == true)

或:

if ("${host}".equalsIgnorecase("host.domain.com") == true)