JSON过滤问题



我不能在jmespath中的字符串中使用环境变量。使用通配符也可以,但在我的情况下也不起作用。任何关于这个问题的线索都将不胜感激!

aws logs describe-log-groups | jq -r --arg CLUSTER_NAME "$EKS_CLUSTER_NAME" '.logGroups[] | select(.logGroupName == '/aws/eks/$CLUSTER_NAME/cluster')'

输出:

jq: error: syntax error, unexpected '/' (Unix shell quoting issues?) at <top-level>, line 1:
.logGroups[] | select(.logGroupName == /aws/eks//cluster)
jq: 1 compile error

您有两个问题:

  • 您的内部jq引号与外部外壳引号冲突。将内部的替换为双引号",这是在jq中使用字符串文字的方法
  • 要在jq中的字符串中包含变量值,您可以将部分相加(例如,使用+作为".." + $var + ".."(,也可以使用字符串插值"..($var).."

尝试

jq -r --arg CLUSTER_NAME "$EKS_CLUSTER_NAME" '
.logGroups[] | select(.logGroupName == "/aws/eks/($CLUSTER_NAME)/cluster")
'

最新更新