詹金斯管道字符串比较

jenkins pipeline string compare

我正在尝试将变量与常量字符串而不是布尔值进行比较。我收到 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" )

None 以上尝试成功。有没有可能在管道中进行比较?

你的三次尝试:

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

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

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

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

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

第三次尝试:

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

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

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

或:

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