比较管道插件jenkins中的字符串

比较管道插件jenkins中的字符串,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,我正在为jenkins构建一个带有管道插件的流程管道。我有一些工作要做。为了决定下一步必须使用哪一步,我在一个文件中编写了一个返回代码。在这之后,我阅读了这个文件并做出了决定。但这种比较是行不通的 def returnCode = readFile 'return' //IP in Datenbank if ( returnCode == "1" ){ } else{ } 当我尝试echo returnCode时,脚本会在控制台上打印“1”,但它总是进入else部分。比较有什么问题吗?请检查

我正在为jenkins构建一个带有管道插件的流程管道。我有一些工作要做。为了决定下一步必须使用哪一步,我在一个文件中编写了一个返回代码。在这之后,我阅读了这个文件并做出了决定。但这种比较是行不通的

def returnCode = readFile 'return'

//IP in Datenbank
if ( returnCode == "1" ){
}
else{
}
当我尝试
echo returnCode
时,脚本会在控制台上打印“1”,但它总是进入else部分。比较有什么问题吗?

请检查这个

node ('master'){
    def returnCode = 1
    println (returnCode)

    if( returnCode == 1 ) {
        sh 'echo 1 !!'
    }
    else{
        sh 'echo not 1 !!!'
    }
}

使用“trim()”时提到的注释之一。这很可能就是问题所在

每当我在调试时打印字符串时,我总是这样打印:

println "label[${variable}]"

如果您在输出中看到一行上的值和下一行上的“]”(或仅带有额外的空格),则表明您必须“修剪()”该值。

I必须面对相同的问题。问题在于新行或空格字符。例如:

status = getstat()
if (status == "started"){
  println("in if")
} else {
  println("in else")
}

def getstat() {
  def out = new StringBuilder(), err = new StringBuilder()
    status = 'echo started'.execute()
  status.consumeProcessOutput(out, err)
  println "out> $out err> $err"
  println(out)
  return out
}
o/p为:

out> started
 err> 
started

in else
现在只需将返回值更改为

return out.replaceAll("[\n\r]", "");
现在o/p是:

out> started
 err> 
started

in if

returnCode
是否为
String
类型?文档说明:readFile:readFile from workspace从相对路径(根目录在当前目录中,通常是workspace)读取文件,并以普通字符串形式返回其内容。所以我认为它应该是一个字符串?有没有可能在
return
文件中有一些隐藏字符,比如换行符?可以尝试
trim()
返回代码字符串。