如何将包含空格的字符串参数传递到Jenkinsfile中的shell脚本中



我在我的Jenkinsfile中有一个字符串参数,其中包含一个空格

参数{字符串(名称:'KW_Issue_resolution', defaultValue: 'Not a Problem',描述:'将问题标记为'Not a Problem')}

我试图将这个参数传递到一个shell脚本中的阶段

stage ('Mark KW issues as not a problem') {

steps {
sh "kwcheck set-status ${params.KW_Issue_IDs} --status ${params.KW_Issue_resolution}"  
}
}

但是,shell不会将整个字符串识别为"Not a Problem">

+ kwcheck set-status 190 --status Not a Problem
Cannot change status, 'Not' is not a valid status name

期望shell命令是kwcheck set-status 190——status "Not a Problem">

由于变量在Groovy解释器中插入了空格,因此由于分隔符的原因,shstep方法中的shell解释器不会将其解析为单个参数字符串。您可以在shell解释器中使用正常语法将其转换为文本字符串:

sh "kwcheck set-status ${params.KW_Issue_IDs} --status '${params.KW_Issue_resolution}'"

您可以在Groovy语法中使用三引号。

因此,在三重引号中,您可以像使用本机bash脚本一样使用"'

stage ('Mark KW issues as not a problem') {    
steps {
sh """#! /bin/bash
kwcheck set-status "${params.KW_Issue_IDs}" --status "${params.KW_Issue_resolution}"
"""  
}
}

最新更新