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

如何通过环境变量结合yq动态提取YAML中的租户信息?

使用yq根据环境变量提取YAML中对应环境的租户列表

我想用yq工具,根据环境变量动态提取YAML文件中对应环境的租户值。假设环境变量var="az-dev",需要获取az-dev对应的租户列表。试了下面两个命令都没成功,附上相关内容求解决方案。

YAML文件内容

tenantlist:
  az-dev:
    tenants:
      - myazdev
  az-stage:
    tenants:
      - myazstg1 myazstg2
  aw-dev:
    tenants:
      - myawdev1 myawdev2
  aw-stage:
    tenants:
      - myawstg1 myawstg2

尝试过的命令

var="az-dev" yq e '.tenantlist | select(. == env(var))' file.txt 

var=az-dev; yq '.tenantlist |= strenv(var) has("az-dev")' file.txt

解决方案

你之前的命令写法有误,正确的做法是直接用环境变量作为键访问tenantlist下的对应节点,再提取tenants字段:

方法1:通过env(var)读取环境变量

var="az-dev" yq e '.tenantlist[env(var)].tenants' file.txt

方法2:通过strenv(var)读取Shell变量(适合已提前定义变量的场景)

var=az-dev; yq e '.tenantlist[strenv(var)].tenants' file.txt

执行后会输出:

- myazdev

错误原因说明

  • 第一个命令里的select(. == env(var))不适用,因为.tenantlist是键值对对象而非数组,select无法匹配到目标键;
  • 第二个命令语法错误,has的用法不符合规则,且|=是赋值操作,和你提取值的需求不符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:45:41