Docker Jenkins管道groovy字符串比较
当我将Jenkins pipeline through与Docker一起使用时,我想将字符串值与Groovy脚本进行比较,但比较结果是错误的,下面的脚本是我的Groovy脚本和输出结果: 有人能告诉我如何解决这个问题吗Docker Jenkins管道groovy字符串比较,docker,jenkins,groovy,jenkins-pipeline,Docker,Jenkins,Groovy,Jenkins Pipeline,当我将Jenkins pipeline through与Docker一起使用时,我想将字符串值与Groovy脚本进行比较,但比较结果是错误的,下面的脚本是我的Groovy脚本和输出结果: 有人能告诉我如何解决这个问题吗 String runningContainerId = sh(script: "docker ps --filter=\"name=${appEnv}-${env.JOB_NAME}-${env.BUILD_NUMBER}\" -q | xargs", returnStdout:
String runningContainerId = sh(script: "docker ps --filter=\"name=${appEnv}-${env.JOB_NAME}-${env.BUILD_NUMBER}\" -q | xargs", returnStdout: true)
//def runningImageId = sh(script: "docker images | grep ${appEnv}-${env.JOB_NAME}:${env.BUILD_NUMBER} | tr -s ' ' | cut -d ' ' -f 3 ", returnStdout: true)
println 'current container:' + runningContainerId
//println runningImageId
try{
def ret = sh(script: "docker ps --filter=\"name=${appEnv}-${env.JOB_NAME}\" -q | xargs", returnStdout: true)
def splitStr = ret.tokenize(" ")
println 'splitStr=>' + splitStr
String containerId = runningContainerId
println 'containerId=>' + containerId
for( String str in splitStr) {
print str == containerId
print 'str=>' + str
if ( str == containerId) {
print 'same string:' + str
} else {
print 'different string:' + str
}
}
詹金斯的输出结果是:
splitStr=>[8abe81071b7f, 40e2292d5099, 4136bbdf9cc5]
[Pipeline] echo
containerId=>8abe81071b7f
[Pipeline] echo
false
[Pipeline] echo
str=>8abe81071b7f
[Pipeline] echo
different string:8abe81071b7f
[Pipeline] echo
false
[Pipeline] echo
str=>40e2292d5099
[Pipeline] echo
different string:40e2292d5099
[Pipeline] echo
false
[Pipeline] echo
str=>4136bbdf9cc5
[Pipeline] echo
different string:4136bbdf9cc5
检查字符串末尾是否有空格谢谢您的建议!根据你的建议,我已经解决了我的问题。@herryliq你能把它贴出来并接受它作为答案吗?