导出阵列环境变量bash / bitbucket管道

时间:2020-03-10 17:00:50

标签: bash bitbucket-pipelines

我在bitbucket部署设置中具有以下变量:

CALLBACKS="https://myapp.com" "http://localhost:3000"

我需要将其导出到类型为array的环境变量,此后脚本将读取该变量。我正在尝试此方法,但是它不起作用:

read -a CALLBACKS_ARRAY <<< "${CALLBACKS}"
export CALLBACKS_ARRAY="$(echo ${CALLBACKS_ARRAY})"

1 个答案:

答案 0 :(得分:2)

此操作无法完成。。环境变量使用NUL分隔;数组定义使用NUL分隔各项。因此,仅当环境变量序列化为字符串时,才可以将其导出,以便子进程可以将其反序列化为数组。

相比之下,

您可以 进行的操作是导出BASH_ENV,其文件名包含内容,该内容在来源时将定义您的数组。

因此:

read -a CALLBACKS_ARRAY <<< "${CALLBACKS}"
BASH_ENV=$(mktemp -t bash_env.XXXXXX)
declare -p CALLBACKS_ARRAY >"$BASH_ENV"
export BASH_ENV

请注意,兼容的/bin/sh读取的是ENV,而不是BASH_ENV;就是说,由于基线POSIX sh标准中不存在数组,因此这里不必过多担心。

相关问题