当前位置: 首页 > 知识库问答 >
问题:

在Jenkinsfile中将shell变量与groovy变量混合和匹配

徐翔
2023-03-14

我已经尝试了下面代码的各种变体,它们似乎都不起作用

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

缑修齐
2023-03-14

使用此

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

单引号< code >“”将创建多行shell脚本。< code>"引号将获取命令变量的值,并将其与shell脚本连接起来。请注意,有两个shell变量< code>key

参考资料:

在管道的shell步骤中访问Groovy变量 Jenkins

如何将变量从 Jenkinsfile 传递给 shell 命令

 类似资料:
  • 问题内容: 我刚开始学习groovy,我想将svnSourcePath和svnDestPath传递给svn copy命令中的shell脚本。但是网址未呈现。 输出量 问题答案: 在变量周围添加了单引号和加operator(’+ variable +’)。现在正在工作

  • 问题内容: 说我有一个变量,它的定义为: 我想输出,我可以这样: 但是我宁愿将代码简化为类似以下内容(不起作用): 有没有办法像对待变量一样对待它呢? 问题答案: 直接在字符串中插入变量时,可以使用花括号消除歧义。 此外,这不适用于单引号。所以: 将输出

  • 问题内容: 我想在脚本内部使用一个变量,然后将其值传递给Shell脚本执行(作为环境变量或命令行参数)。 但是以下内容: 给出输出: 所需的输出类似于: 任何想法如何将值传递给shell scipt吗? 编辑: 基于马特的]答案,我现在使用此解决方案: 好处是,我不需要在shell脚本中转义。 问题答案: 您的代码使用文字字符串,因此您的Jenkins变量将不会在shell命令中插入。您需要使用来

  • 我想在脚本中使用一个变量,然后将其值传递到shell脚本执行中(作为环境变量或命令行参数)。 但是下面的: 给出输出: 期望的输出是这样的: 你知道如何将的值传递给shell scipt吗? 编辑:根据Matt的回答,我现在使用以下解决方案: 优点是,我不需要在shell脚本中转义。

  • 变量 my_name="Asa" 命名规则: 首个字符必须为字母(a-z,A-Z)。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。 使用变量 my_name="Asa" echo $my_name echo ${my_name} 备注:后两句效果一样,均为输出变量的值。变量名外面的花括号是可选的,加花括号是为了帮助解释器

  • 1. Shell 变量概述 变量是任何程序或脚本的重要组成部分,变量为程序或脚本访问内存中的可修改的一块数据提供了简单的方式。 Linux Shell 中的变量可以被指定为任意的数据类型,比如文本字符串或者数值。你也可以通过修改 Shell 中的变量来改变 Shell 的样式。 接下来就让我们来了解和学习一下 Shell 中的变量吧。 1.1 Shell 变量是什么 Shell 变量是什么呢,顾名

  • 问题内容: 对于多分支项目,我有一个声明性管道脚本,在该脚本中,我想读取文本文件并将结果存储为字符串变量,以供管道的后续步骤访问。使用摘要生成器,我尝试执行以下操作: 为此,这将是我的字符串。 在Jenkins控制台输出中出现错误: 我是否需要使用一个步骤来将Jenkins环境变量的输出设置为?如果是这样,怎么办? 谢谢 问题答案: 该错误是由于只允许您在指令中使用管道步骤。我知道一种解决方法是使

  • 我正在使用gradle和bash脚本在docker图像中构建几个android应用程序。该脚本由运行docker映像的jenkins触发。在bash脚本中,我收集有关构建成功的信息。我想将该信息传递给jenkinsfile的groovy脚本。我试图在docker容器中创建一个txt文件,但jenkinsfile中的groovy脚本找不到该文件。这是我的jenkinsfile的groovy脚本: 在