Jenkins Pipeline中Groovy字符串比较失效问题求助
问题解决:Jenkins中readFile读取字符串比较失败
你的问题出在readFile读取的字符串包含换行符,导致和纯"1"比较不匹配。从运行输出能看到,echo output之后有一行空行,说明读取的内容实际是"1\n"(带换行),而不是你以为的"1"。
解决方法
方法1:去除首尾空白字符
用trim()方法去掉字符串首尾的换行、空格等空白字符,再做比较:
def output = readFile("$WORKSPACE/txt.txt").trim() println output.getClass() println output if (output == "1") { println "Jenkins Node diskspace starting to get a bit slim." } else { println "Plenty of disk space" }
方法2:转为整数比较
因为文件内容是0-4的数字,直接转成整数再比较更稳妥:
def output = readFile("$WORKSPACE/txt.txt").trim().toInteger() println output.getClass() println output if (output == 1) { println "Jenkins Node diskspace starting to get a bit slim." } else { println "Plenty of disk space" }
原因说明
readFile会完整读取文件的所有内容,包括行尾的换行符。你看到的输出中"1"下方的空行,就是这个换行符导致的。直接用带换行的字符串和纯"1"比较,自然会不相等,trim()可以解决这个问题。
内容的提问来源于stack exchange,提问作者Caolan
相关产品推荐
相关产品推荐

