【发布时间】:2021-10-11 06:45:28
【问题描述】:
当使用 JQ 测试键的值时,过滤器意外返回 false,而它原本应该返回 true。
假设以下变量-
TAGS='{"kubernetes.io/cluster/my-cluster":"owned"}
CLUSTER_NAME="my-cluster"
当使用硬编码值测试$TAGS 时,过滤器会按预期返回true。
echo $TAGS | jq '."kubernetes.io/cluster/my-cluster" == "owned"'
但是,在引入 clusterName 作为 JQ 参数后,过滤器现在返回 false。
echo $TAGS | jq --arg clusterName $CLUSTER_NAME '."kubernetes.io/cluster/" + $clusterName == "owned"'
我首先想知道$CLUSTER_NAME 中的- 是否是问题所在,但删除它(并更新$TAGS 以匹配)会产生相同的结果。
我在过滤器中尝试了以下方法,所有这些都产生了相同的结果。
."kubernetes.io/cluster/" + "$clusterName"
."kubernetes.io/cluster/ + $clusterName"
."kubernetes.io/cluster/$clusterName"
如何修改过滤器以按预期工作?
【问题讨论】: