在Jenkinsfile中将Shell变量与groovy变量混合并匹配

时间:2018-11-20 22:31:02

标签: shell jenkins groovy jenkins-pipeline jenkins-groovy

我尝试了以下代码的各种变体,但似乎都不起作用

def runScript(command){
    sh '''#!/bin/bash
        file="env.txt"
        while IFS='=' read -r key value
        do
            export ${key}="${value}"
        done < "$file"
        pwd
        "${command}"
    '''
}

command是要从env.txt重新创建环境变量之后要执行的动态shell命令。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用此

   def runScript(command){
        sh '''#!/bin/bash
            file="env.txt"
            while IFS='=' read -r key value
            do
                export ${key}="${value}"
            done < "$file"
            pwd
        ''' + "${command}"
    }

单引号'''将创建多行shell脚本。 "引号将获取命令变量的值并将其与shell脚本连接。 请注意,有两个外壳变量keyvalue,因此'''不能替换为"""

参考文献:

Access a Groovy variable from within shell step in Jenkins pipeline

How to pass variables from Jenkinsfile to shell command