'aws ec2 describe-instances --query' no funciona en ZSH

'aws ec2 describe-instances --query' no funciona en ZSH

El siguiente comando funciona bien en bash:

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

Sin embargo, si intento ejecutarlo en zsh, me da:

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

¿Hay alguna forma de solucionar esto?

Estoy corriendo:

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

Respuesta1

Prueba esto:

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

Los soportes se utilizan para globbing en amboszshyintento. La diferencia es que por defectointentodeja un patrón sin cambios, si no coincide, mientraszshimprime un mensaje "no se encontró ninguna coincidencia".

Por lo general, citarlos entre comillas simples, como se hace en la pregunta, debería resolver este problema. Pero parece que al menos el valor de la opción --queryse agota evalsin saneamiento previo ni cotizaciones adicionales. Recibe el mensaje de error porque las comillas simples existentes no se pasan como parte del valor. En la solución que sugerí, las comillas dobles se pasarán, de modo que la consulta siga entrecomillada cuando se ejecute a través de eval.

información relacionada