Shell 竹-在任务/脚本之间传递环境变量

Shell 竹-在任务/脚本之间传递环境变量,shell,bamboo,Shell,Bamboo,是否可以将一个脚本中设置的环境变量传递到另一个脚本中 例如,我如下所示设置Go,并希望后续任务(脚本)能够访问我在此处导出的路径和GOPATH set -e if [ ! -d "go" ]; then wget -q https://storage.googleapis.com/golang/go1.5.linux-amd64.tar.gz tar -xzf go1.5.linux-amd64.tar.gz fi export GOROOT=$(pwd)/go mkdir

是否可以将一个脚本中设置的环境变量传递到另一个脚本中

例如,我如下所示设置Go,并希望后续任务(脚本)能够访问我在此处导出的路径和GOPATH

set -e

if [ ! -d "go" ]; then
    wget -q https://storage.googleapis.com/golang/go1.5.linux-amd64.tar.gz
    tar -xzf go1.5.linux-amd64.tar.gz
fi

export GOROOT=$(pwd)/go

mkdir -p gopath/
export GOPATH=$(pwd)/gopath
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH

环境变量只能从父进程传递到子进程。 要将它们放入一个不相关的程序中,您可以将它们写入一个文件,然后在另一个脚本中获取该文件的源代码:

...
echo export GOROOT=$GOROOT >>$GOROOT/.vars
echo export GOPATH=$GOPATH >>$GOROOT/.vars
echo export PATH=$PATH >>$GOROOT/.vars
然后,稍后启动的其他脚本应该在接近开始的地方有以下内容(假设它们从GOROOT目录中的工作目录开始):


(或将其添加到启动其他脚本的脚本中。)

这已使用
注入变量
插件实现,该插件自5.7开始捆绑:

方法如下:

  • 在初始任务中,让脚本将状态存储到文件中(采用
    key=value
    格式),类似于:
echo“MYVAR=$(cat some_variable_info_file)”>>build/docker.properties

  • 配置以下
    Inject
    任务,将上一步中的属性文件读取到变量中。设置属性文件的路径(例如build/docker.properties)并设置名称空间,例如docker

  • 要在下一个脚本任务*中使用此变量,可以将其称为: $bambon\u docker\u MYVAR其中
    docker
    是名称空间,
    MYVAR
    是属性文件中属性的键。例如,它可以被称为:

echo$Bambon\u docker\u MYVAR

这意味着您仍然可以使用基于文件的方法,只需确保其中的数据类型为:

some_key1=some_value1
some_key2=some_value2
等等

*请注意,从竹子文档中,下划线是使用它的方式:

在bash中使用变量


竹变量作为bash shell变量导出。所有句号(句点)都转换为下划线。例如,变量bambor.my.variable在bash中是$bambor\u my\u变量。这与文件脚本任务(非内联脚本任务)有关。

大家好,这是目前唯一可用的方法吗?因为我正在寻找一种方法将一个任务的结果发送到下一个任务,但无法找到Bambol提供的任何默认方法。有人谁已经取得了这一成功可以详细阐述这一点…在背景下,以最新版本的竹CI服务器。任何帮助都将不胜感激。Thnx
some_key1=some_value1
some_key2=some_value2