如何从Jenkinsfile中的sh脚本中访问变量

时间:2018-03-16 15:43:15

标签: jenkins groovy jenkins-pipeline

以下代码是我的代码的一个非常简化的版本,只是为了更好的解释:

def String FOLDER_NAME = "TestFolder"

def createFolder() {
    sh('''
        ls
        mkdir ${FOLDER_NAME}
        ls
    ''')
}

我想使用存储在FOLDER_NAME变量中的名称来创建新文件夹。问题是当前代码不使用它。我的第一种方法是使用''围绕变量访问:

def createFolder() {
    sh('''
        ls
        mkdir '${FOLDER_NAME}'
        ls
    ''')
}

但是这会创建一个名为$ {FOLDER_NAME}的新文件夹,并且不会使用变量值。

我的问题是,我如何更改代码以使其使用变量值,而不是变量调用?

2 个答案:

答案 0 :(得分:3)

您的解决方案将由differentiating between groovy's single and double quotes解决。

字符串替换仅在双引号""内完成。因此,要解决此问题,只需将sh命令更改为:

def createFolder() {
    sh("""
        ls
        mkdir '${FOLDER_NAME}'
        ls
    """)
}

答案 1 :(得分:-1)

我的解决方案不同,在shell脚本中使用变量可以实现如下:

def createFolder() {
    sh('''
        ls
        mkdir ''' + FOLDER_NAME + '''
        ls
    ''')
}