«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.

Связанный контент