如何基于JSON数组字符串生成指定命名规则的环境变量?
将JSON字符串数组转换为Bash环境变量
需求场景
给定包含字符串元素的JSON数组字符串:
json='["foo", "bar", "baz"]'
需要生成对应的环境变量,变量名为元素大写后拼接_VAR,值统一设为1:
FOO_VAR=1 BAR_VAR=1 BAZ_VAR=1
实现方案
按照你提出的两步思路即可完成,以下是完整的可执行Bash脚本:
#!/bin/bash # 定义目标JSON字符串 json='["foo", "bar", "baz"]' # 将JSON数组转换为Bash数组 mapfile -t arr < <(echo "$json" | jq -r '.[]') # 遍历数组生成环境变量 for item in "${arr[@]}"; do # 转换元素为大写并拼接变量后缀 var_name="${item^^}_VAR" # 导出环境变量(若无需全局可用可去掉export) export "$var_name"=1 done # 可选:打印变量验证结果 echo "FOO_VAR=$FOO_VAR" echo "BAR_VAR=$BAR_VAR" echo "BAZ_VAR=$BAZ_VAR"
关键步骤说明
- JSON转Bash数组:使用
jq -r '.[]'解析JSON数组,将每个元素逐行输出;再通过mapfile -t arr把输出内容读取到Bash数组arr中,-t参数会自动去除每行末尾的换行符,保证元素格式正确。 - 生成环境变量:遍历数组时,利用Bash内置的参数扩展
${item^^}将元素转为大写,拼接_VAR得到最终变量名;使用export命令将变量导出为环境变量(如果仅在当前脚本内使用,可省略export)。
内容的提问来源于stack exchange,提问作者Dave Cross
相关产品推荐
相关产品推荐

