zsh 中使用curl 時發生錯誤?

zsh 中使用curl 時發生錯誤?

我想在 zsh 中運行curl 命令。

curl -X GET "https://api.cloudflare.com/client/v4/zones/<ZONE>" \ 
-H "Content-Type:application/json" \ 
-H "Authorization: Bearer <TOKEN>"

但是當運行這個我得到

{"success":false,"errors":[{"code":9106,"message":"Missing X-Auth-Email header"},{"code":9107,"message":"Missing X-Auth-Key header"}],"messages":[],"result":null}curl: (3) URL using bad/illegal format or missing URL
zsh: command not found: -H
zsh: command not found: -H

除了錯誤回應之外。為什麼到我zsh: command not found: -H這裡就意味著該選項-H被忽略了。

答案1

程式碼中的每個\字元都會轉義後面的空格字元。轉義空格的行為類似於引號的空格。您的程式碼不僅會產生空格單字(而且您不想要這些單字)。反斜線轉義空格,因此它們不會轉義換行符。實際上,您的程式碼由三個單獨的命令組成;其中兩個以 和 開頭-H,毫無意義。就好像你在運行:

curl -X GET "https://api.cloudflare.com/client/v4/zones/<ZONE>" ' '
-H "Content-Type:application/json" ' '
-H "Authorization: Bearer <TOKEN>"

這裡的空格被引用,在您的程式碼中它們被轉義。結果是相同的。

要在下一行繼續執行命令,您需要轉義換行符。

刪除字元後面的空格\。兩個反斜杠中的每一個都應該出現立即地在對應的換行符之前。然後這三行將被解釋為一個命令。

這不是特定於zsh.

相關內容