Windows下Bash环境通过AWS CLI获取目标组ARN报错求助
问题解决
错误原因
你命令里的true用了反引号,在Windows的Bash环境中,反引号会被当作命令替换符执行——true命令执行后没有输出,导致最终的JMESPath查询表达式里==后面变成空内容,触发语法解析错误。
修复方案
方案1:简化查询表达式(推荐)
JMESPath的过滤条件本身可以直接使用布尔型返回值,不需要额外和true做比较。直接去掉== true``部分即可:
value=test aws elbv2 describe-target-groups --query "TargetGroups[?starts_with(TargetGroupName, '${value}')].[TargetGroupArn]"
方案2:保留比较逻辑,修正引号用法
如果一定要保留和true的比较,把反引号换成单引号,避免Bash解析命令替换:
value=test aws elbv2 describe-target-groups --query "TargetGroups[?starts_with(TargetGroupName, '${value}') == 'true'].[TargetGroupArn]"
额外提示
你的需求是获取名称包含指定值的目标组ARN,但原命令用的是starts_with(匹配以指定值开头的名称)。如果要匹配名称中包含指定值的目标组,需要把starts_with换成contains:
value=test aws elbv2 describe-target-groups --query "TargetGroups[?contains(TargetGroupName, '${value}')].[TargetGroupArn]"
内容的提问来源于stack exchange,提问作者Leonardo Arango
相关产品推荐
相关产品推荐

