groovy脚本 - 变量

时间:2017-04-12 18:11:01

标签: shell jenkins groovy

缺少明显的东西。 如何将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上使用三重引号,因为一旦我理顺了这些内容,我会在那里进行内容。

3 个答案:

答案 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”