'aws ec2 describe-instances --query' não funciona no ZSH

0

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 resolver isso?

Estou correndo:

aws-cli/1.11.5 Python/2.7.6 Linux/4.4.0-45-generic botocore/1.4.62
    
por Henrique Barcelos 20.10.2016 / 22:45

1 resposta

0

Tente 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 zsh e bash . A diferença é que, por padrão, bash deixa um padrão inalterado, se não corresponder, enquanto zsh imprime uma mensagem "sem 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 é executado através de eval sem saneamento prévio ou cotação extra. Você recebe a mensagem de erro, pois 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.

    
por 21.10.2016 / 13:27