Bash: 动态创建环境变量

Bash: Dynamically create environment variables

我们通过路径将秘密传送到我们的容器中,例如:/mnt/secrets

...并且该目录中的每个后续文件都是 'secret',其内容是值:例如/mnt/secrets/somepassword 包含 'superdooperpassword123'

发生这种情况是因为我们正在管理来自秘密存储提供商的秘密(加密等)。但是,我需要将这些文件+文件内容转换为环境变量,以便在其他脚本中使用。

这是我尝试使用的脚本,secrets.sh:

FILES="/mnt/secrets/*"
for f in $FILES
do
  FILE=$(basename $f)
  echo "Creating environment variable for the following secret:  $FILE"
  declare -xg $(echo $FILE)=$(cat $f)
done

虽然它运行没有错误,但当我尝试确保它们可用时,我没有看到(通过 'set' 或使用 'echo $var' 什么也得不到)。我已经为 'declare' 尝试了多个参数,但我似乎无法将 secrets.sh 中声明的变量 运行(从文件及其内容)公开回 bash。

我知道我可能漏掉了一些简单的东西。如果能指导我如何使用 shell 脚本将文件及其内容从文件系统读取到动态创建的环境变量中,将不胜感激。 TIA!~

您必须获取文件

source secrets.sh

. secrets.sh

否则您设置的子进程变量与父进程的变量不同