
以下命令在 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"'
括號用於在兩者中進行通配桀騁和巴什。差別在於預設情況下巴什如果不匹配,則保持模式不變,而桀騁列印“未找到匹配”訊息。
通常用單引號引用它們 - 正如所討論的那樣 - 應該可以解決這個問題。但似乎至少該選項的價值是在沒有事先清理或額外引用的情況下--query
運行的。eval
您會收到錯誤訊息,因為現有單引號未作為值的一部分傳遞。在我建議的解決方案中,雙引號將被傳遞,以便查詢在透過 eval 運行時仍然被引用。