shell - 将 shell 变量与 Jenkinsfile 中的常规变量混合并匹配

标签 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 命令

有什么想法吗?

最佳答案

使用这个

   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 脚本连接起来。 请注意,有两个 shell 变量 keyvalue,因此 ''' 不能替换为 """

引用文献:

Access a Groovy variable from within shell step in Jenkins pipeline

How to pass variables from Jenkinsfile to shell command

关于shell - 将 shell 变量与 Jenkinsfile 中的常规变量混合并匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53402568/

相关文章:

linux - 为 memcached 命令编写 bash 脚本

regex - {$TENANTCODE$} 的 sed 转义规则

php - 使用 Jenkins 和 Php 代码嗅探器

xml - 如何使用 XML API 获取 Jenkins 作业列表

database - 我可以在没有数据源的情况下配置 Grails 吗?

java - 在“放心”中获取请求时出现错误

bash - unix 中的自定义脚本输出

shell - .zshrc 中的命令未找到

java - Jmeter - java 编码。如何获取输出数据?

java - Gremlin (Titan) 中的嵌套变换