我在bitbucket部署设置中具有以下变量:
CALLBACKS="https://myapp.com" "http://localhost:3000"
我需要将其导出到类型为array的环境变量,此后脚本将读取该变量。我正在尝试此方法,但是它不起作用:
read -a CALLBACKS_ARRAY <<< "${CALLBACKS}"
export CALLBACKS_ARRAY="$(echo ${CALLBACKS_ARRAY})"
答案 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标准中不存在数组,因此这里不必过多担心。