首页 > 解决方案 > 设置由字符串定义的环境变量?

问题描述

我正在编写一个脚本来将配置变量从云存储服务复制到环境变量中(仅用于本地开发,以避免在应用程序或测试服务器启动时发出一大堆请求)。我已经有一个文件,它是以行分隔的变量名列表。

我知道如何使用已知名称设置环境变量:

export SOME_VAR=some_value

我不知道如何使用“未知”(在写入时)名称设置环境变量。所以我会读入那个变量名文件,然后遍历列表,请求exporting每个变量。

所以主要问题是:如何以编程方式设置一个环境变量,其名称在运行时仅存在于字符串中?

标签: bashshellenvironment-variables

解决方案


您的脚本实际上不应该与 cat|while 一起使用,因为在这种情况下,while 将在子进程中执行,并且任何设置或导出都只会影响子进程。循环结束后,所有变量都将丢失。

试试这个:

#! /usr/bin/env bash
while IFS= read -r line; do
  export $(echo ${line^^})=$(get_value_from_secret_store "$line")
done < list_of_vars_file.txt

推荐阅读