我不能在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")
'