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.