
O seguinte comando funciona bem no bash:
aws ec2 describe-instances \
--filters "Name=tag:Name,Values=XXXXXXX" "Name=instance-state-code,Values=16" \
--query 'Reservations[0].Instances[0].PublicDnsName'
No entanto, se eu tentar executá-lo em zsh, isso me dará:
(eval):1: no matches found: Reservations[0].Instances[0].PublicDnsName
Existe alguma maneira de contornar isso?
Estou correndo:
aws-cli/1.11.5 Python/2.7.6 Linux/4.4.0-45-generic botocore/1.4.62
Responder1
Experimente isto:
aws ec2 describe-instances \
--filters "Name=tag:Name,Values=XXXXXXX" "Name=instance-state-code,Values=16" \
--query '"Reservations[0].Instances[0].PublicDnsName"'
Os colchetes são usados para globbing em amboszshefesta. A diferença é que por padrãofestadeixa um padrão inalterado, se não corresponder, enquantozshimprime uma mensagem "nenhuma correspondência encontrada".
Normalmente citá-los com aspas simples - como feito em questão - deve resolver esse problema. Mas parece que pelo menos o valor da opção --query
é percorrido eval
sem saneamento prévio ou cotação extra. Você recebe a mensagem de erro porque as aspas simples existentes não são transmitidas como parte do valor. Na solução que sugeri, as aspas duplas serão repassadas, para que a consulta ainda seja citada quando for executada por eval.