groovy脚本 - sh变量

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)