Ale*_*lex 8 shell groovy jenkins
缺少明显的东西.如何将groovy脚本中的变量传递给shell命令?如果对语法很重要,这是在Jenkinsfile的上下文中.
def COLOR
node('nodename'){
stage ('color') {
COLOR = "green"
echo "color is $COLOR"
sh '''COLOR=${COLOR}
echo $COLOR'''
}
}
Run Code Online (Sandbox Code Playgroud)
我希望看到shell打印green
,但我得到以下内容;
[Pipeline] echo
color is green
[Pipeline] sh
[job] Running shell script
+ COLOR=
+ echo
Run Code Online (Sandbox Code Playgroud)
我必须使用三重引用,sh
因为一旦我理解了这些内容将会进入那里.
man*_*uti 16
您必须使用双引号而不是单引号才能替换字符串中的表达式:
def COLOR
node('nodename'){
stage ('color') {
COLOR = "green"
echo "color is $COLOR"
sh """COLOR=${COLOR}
echo $COLOR"""
}
}
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因需要使用单引号,请尝试使用+
以下连接:
sh '''COLOR=''' + COLOR + '''
echo ''' + COLOR
Run Code Online (Sandbox Code Playgroud)