在Bash中如何读取文件并将内容设置为环境变量?
在Bash中读取文件键值对并设置为环境变量
针对你提供的配置文件格式,有两种简单可靠的实现方式:
方法一:直接source配置文件
你的配置文件内容本身就是合法的Bash变量赋值语句,因此可以直接用source(或等效的.命令)让Shell加载并执行文件中的内容:
# 替换为你的配置文件实际路径,比如./config.env source ./your-config-file
执行后直接验证变量:
echo ${EnableSchemaValidation} # 输出:False echo ${EnableRedshiftImport} # 输出:True
这种方法简单高效,但要确保配置文件中只有变量赋值语句,避免包含其他可能执行的Shell命令。
方法二:逐行解析并导出环境变量
如果需要更灵活的控制(比如过滤空行、处理值的引号),可以用循环逐行读取文件内容,处理后导出为环境变量:
while IFS='=' read -r key value; do # 跳过空行或注释行(如果配置文件里有的话) [[ -z "$key" || "$key" == \#* ]] && continue # 移除值两端的双引号 value=$(echo "$value" | sed 's/^"//;s/"$//') # 导出为环境变量(确保子进程也能访问) export "$key=$value" done < ./your-config-file
执行后同样可以通过echo命令验证变量值。这种方式能兼容配置文件中的空行和注释,同时自动处理值的引号,适用性更广。
内容的提问来源于stack exchange,提问作者Biao Yu
相关产品推荐
相关产品推荐

