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

如何用yq检查YAML列表中指定值是否存在?现有命令返回false

正确检查YAML数组中是否存在指定值的yq命令

你的问题出在has()函数的用法上:这个函数是用来检查**键(key)**是否存在于对象(键值对结构)中的,而.projects.p1是一个数组(列表),不是键值对结构,所以用has()肯定返回false。

针对数组元素的存在性检查,主流的mikefarah/yq有两种常用方法:

  • 使用in运算符,直接判断值是否在数组内:
cat test.yaml | yq '.projects.p1 | "sample/project/app1" in .'

执行后会返回true。

  • 使用any()函数,遍历数组检查是否有匹配的元素(适合需要复杂匹配规则的场景):
cat test.yaml | yq '.projects.p1 | any(. == "sample/project/app1")'

这个命令会逐个检查数组元素,只要有一个匹配就返回true。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:35:26