如果列表中的任何一个条件为真,我正在尝试使用以下 jq 命令返回一个真实的输出。
.Tags[] as $t| "aws:cloudformation:stack-name"| IN($t[])
输入
{
"Tags": [{
"Value": "INF-D-XX-SEC-OPNV-UW1",
"Key": "Name"
},
{
"Value": "INF-D-XX-CFS-StandardInfrastructure-UW1",
"Key": "aws:cloudformation:stack-name"
},
{
"Value": "sgOpenVPNAccess",
"Key": "aws:cloudformation:logical-id"
},
{
"Value": "UW1",
"Key": "Location"
},
{
"Value": "INF",
"Key": "Application"
},
{
"Value": "D",
"Key": "Parent Environment"
},
{
"Value": "arn:aws:cloudformation:us-west-1:111111:stack/INF-D-XX-CFS-StandardInfrastructure-UW1/1111-11-11e8-96fe-11",
"Key": "aws:cloudformation:stack-id"
},
{
"Value": "OPNV",
"Key": "ResourceType"
}
]
}
这给了我一个返回的 bool 值列表,如下所示,
- 输出 -
true
false
false
false
false
false
false
我想返回一个值
true
如果其中之一Key="aws:cloudformation:stack-name"
被检测到并且没有给我一个值(value)列表。
最佳答案
由于 any/2
,一个非常有效的解决方案(在时间和空间方面)很容易:
any(.Tags[]; .Key == "aws:cloudformation:stack-name")
这当然评估为
true
或 false
.如果你想要 true
或者什么都不做,你可以加入 // empty
以上。
关于arrays - 如何使用jq数组值返回true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55252911/