我想在 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
.