使用yq修改YAML文件添加数组失败,求正确实现逻辑
问题分析与解决方案
当前使用的脚本逻辑不正确,存在以下问题:
- 字段类型错误:你通过
{"orgs":"[]"}设置的是字符串类型的"[]",而非YAML要求的空数组类型[],不符合预期格式。 - 未原地修改文件:默认情况下
yq仅将处理结果输出到控制台,不会直接修改test.yml,必须添加-i参数才能实现原地编辑。 - 命令冗余:无需分四次执行命令,一次操作即可完成所有目标字段的添加。
正确的yq命令(适用于mikefarah/yq v4+)
写法一:直接指定节点添加字段
yq -i '.visibility.subscribe += {"tags": [], "orgs": []} | .visibility.view += {"tags": [], "orgs": []}' test.yml
写法二:遍历所有子节点批量添加(更简洁)
yq -i '.visibility[] += {"tags": [], "orgs": []}' test.yml
执行上述命令后,test.yml会被修改为你期望的格式:
visibility: subscribe: enabled: true type: authenticated tags: [] orgs: [] view: enabled: true type: public tags: [] orgs: []
内容的提问来源于stack exchange,提问作者Dhaval Patel
相关产品推荐
相关产品推荐

