‘aws ec2 describe-instances --query’ 在 ZSH 中不起作用

‘aws ec2 describe-instances --query’ 在 ZSH 中不起作用

以下命令在 bash 中可以正常工作:

aws ec2 describe-instances \
  --filters "Name=tag:Name,Values=XXXXXXX" "Name=instance-state-code,Values=16" \
  --query 'Reservations[0].Instances[0].PublicDnsName'

但是,如果我尝试在 zsh 中运行它,它会给我:

(eval):1: no matches found: Reservations[0].Instances[0].PublicDnsName

有没有什么办法可以解决这个问题?

我在跑:

aws-cli/1.11.5 Python/2.7.6 Linux/4.4.0-45-generic botocore/1.4.62

答案1

尝试这个:

aws ec2 describe-instances \
  --filters "Name=tag:Name,Values=XXXXXXX" "Name=instance-state-code,Values=16" \
  --query '"Reservations[0].Instances[0].PublicDnsName"'

括号用于在狂欢。区别在于默认情况下狂欢如果不匹配,则保持模式不变,而打印“未找到匹配”消息。

通常,用单引号将它们括起来(如问题中所做的那样)应该可以解决这个问题。但似乎至少选项的值--query是在没有事先清理或额外引用的情况下运行的eval。您会收到错误消息,因为现有的单引号不会作为值的一部分传递。在我建议的解决方案中,双引号将被传递,因此查询在通过 eval 运行时仍被引用。

相关内容