Я хочу запустить команду curl в zsh.
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
.