「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 で実行されるときに引用符で囲まれたままになります。

関連情報