我正在执行方法调用:
notifyGerrit('Success')
,方法定义为
def notifyGerrit(String msg) {
sh '''
ssh -i ${JENKINS_PUB_KEY} -o UserKnownHostsFile=/dev/null \
-p 12345 gerrit.abc.com gerrit review \
${GERRIT_CHANGE_NUMBER},${GERRIT_PATCHSET_NUMBER} \
--label ${msg} \ -m "'Successful: ${BUILD_URL}'"
'''
}
执行此操作后,--label
会得到空值
+ ssh -i **** -o UserKnownHostsFile=/dev/null -p 12345 gerrit.abc.com gerrit review 4134,1 --label -m ''\'' Successful: https://abc.gerrit.com/'\''' fatal: Label vote missing '=': -m
我尝试使用
{msg}
msg
$msg
${msg}
但这些都不起作用。如何在代码块中获取参数msg的值。请注意,来自环境的其他变量,例如${BUILD_URL}
等也可以使用。
答案 0 :(得分:2)
如果要用字符串对$msg
变量进行插值,则需要使用双引号而不是单引号。像这样:
def notifyGerrit(String msg) {
sh """
ssh -i ${JENKINS_PUB_KEY} -o UserKnownHostsFile=/dev/null \
-p 12345 gerrit.abc.com gerrit review \
${GERRIT_CHANGE_NUMBER},${GERRIT_PATCHSET_NUMBER} \
--label ${msg} \
-m \\"'Successful: ${BUILD_URL}'\\"
"""
}