You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash脚本中用yq将YAML配置转为带前缀的环境变量

问题:将嵌套YAML转换为带指定前缀的环境变量

给定如下YAML配置文件:

key1:
   key11: value1
   key12: value2
key2:
   key21: value3

如何在Bash脚本中优先使用yq工具,将其转换为带有TF_VAR_前缀的环境变量?期望输出如下:

TF_VAR_key11=value1
TF_VAR_key12=value2
TF_VAR_key21=value3
解决方案(使用mikefarah/yq v4+)

直接通过yq遍历YAML中的二级键值对,拼接出目标格式的环境变量字符串:

yq e 'to_entries[] | .value | to_entries[] | "TF_VAR_\(.key)=\(.value)"' your_config.yaml

命令说明:

  • to_entries[]:将顶层的key1、key2转换为键值对数组,方便遍历
  • .value:提取每个顶层键对应的子配置对象(比如key1包含的key11、key12键值对)
  • 再次使用to_entries[]:将子配置对象展开为单个键值对
  • "TF_VAR_\(.key)=\(.value)":通过字符串模板拼接前缀、键名和值,输出符合要求的格式

如果需要直接将这些变量导入当前Shell会话,可以用eval执行生成的导出命令:

eval $(yq e 'to_entries[] | .value | to_entries[] | "export TF_VAR_\(.key)=\(.value)"' your_config.yaml)

执行后即可直接使用这些环境变量,例如执行echo $TF_VAR_key11会输出value1。

注意点:

  • 请确保安装的是mikefarah/yq v4及以上版本,这是当前主流的yq实现;旧版的kislyuk/yq(Python实现)语法不同,不推荐使用。
  • 如果YAML中的值包含空格或特殊字符,建议将值用单引号包裹,修改模板为"TF_VAR_\(.key)='\(.value)'"。

内容的提问来源于stack exchange,提问作者Liza Shakury

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:30:45