
다음 명령은 bash에서 잘 작동합니다.
aws ec2 describe-instances \
--filters "Name=tag:Name,Values=XXXXXXX" "Name=instance-state-code,Values=16" \
--query 'Reservations[0].Instances[0].PublicDnsName'
그러나 zsh에서 실행하려고 하면 다음과 같은 결과가 나타납니다.
(eval):1: no matches found: Reservations[0].Instances[0].PublicDnsName
이 문제를 해결할 수 있는 방법이 있나요?
나는 뛰고있어:
aws-cli/1.11.5 Python/2.7.6 Linux/4.4.0-45-generic botocore/1.4.62
답변1
이 시도:
aws ec2 describe-instances \
--filters "Name=tag:Name,Values=XXXXXXX" "Name=instance-state-code,Values=16" \
--query '"Reservations[0].Instances[0].PublicDnsName"'
브래킷은 두 가지 모두에서 globbing에 사용됩니다.zsh그리고세게 때리다. 차이점은 기본적으로세게 때리다일치하지 않으면 패턴을 변경하지 않고 그대로 둡니다.zsh"일치하는 항목이 없습니다"라는 메시지를 인쇄합니다.
일반적으로 문제에서처럼 작은따옴표로 인용하면 이 문제가 해결됩니다. 그러나 최소한 옵션의 가치는 사전 위생이나 추가 견적 없이 --query
실행되는 것으로 보입니다. eval
기존 작은따옴표가 값의 일부로 전달되지 않으므로 오류 메시지가 표시됩니다. 내가 제안한 솔루션에서는 큰따옴표가 전달되므로 eval을 통해 실행될 때 쿼리가 계속 인용됩니다.