缺少明显的东西。 如何将groovy脚本中的变量传递给shell命令?如果对语法很重要,这是在Jenkins文件的上下文中。
def COLOR
node('nodename'){
stage ('color') {
COLOR = "green"
echo "color is $COLOR"
sh '''COLOR=${COLOR}
echo $COLOR'''
}
}
我希望看到shell位打印green
,但我得到以下内容;
[Pipeline] echo
color is green
[Pipeline] sh
[job] Running shell script
+ COLOR=
+ echo
我必须在sh
上使用三重引号,因为一旦我理顺了这些内容,我会在那里进行内容。
答案 0 :(得分:14)
为了替换字符串中的表达式,您必须使用双引号而不是单引号:
def COLOR
node('nodename'){
stage ('color') {
COLOR = "green"
echo "color is $COLOR"
sh """COLOR=${COLOR}
echo $COLOR"""
}
}
如果出于某种原因需要使用单引号,请尝试使用+
连接:
sh '''COLOR=''' + COLOR + '''
echo ''' + COLOR
答案 1 :(得分:1)
如果这里的代码是为了将groovy变量值(“green”)分配给环境变量COLOR,而echo $COLOR
是打印出shell变量,那么$
需要是如此转义,以便shell可以读取它,如下所示:
sh """COLOR=${COLOR}
echo \$COLOR"""
答案 2 :(得分:0)
COLOR =“绿色”
sh标签:”,脚本:“ echo $ COLOR”