
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 --query
se agota eval
sin 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.