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

相关内容