Похоже, вы используете cmd.exe
. Правила экранирования персонажа в командной строке одновременно и архаичны, и ужасны. Я рекомендую использовать Powershell вместо этого; он использует правила, намного более сходные с правилами bash
в других * nix-оболочках (хотя и не идентичные, особенно потому, что он использует `(backtick) в качестве escape-символа вместо обратной косой черты).
Вот команда в Powershell в моей системе:
& 'C:\Program Files\Git\mingw64\bin\curl' -i -X POST -H "Content-Type:application/json" -d '{ "firstName" : "Frodo", "lastName" : "Baggins" }' http://localhost:8080/people
Символ &
является обязательным, поскольку путь к программе - строка в кавычках. Я должен был указать путь , потому что я не имею curl.exe
в моем PATH
Windows. Тем не менее, я мог бы просто избежать пробела в "Program Files":
C:\Program` Files\Git\mingw64\bin\curl -i -X POST -H "Content-Type:application/json" -d '{ "firstName" : "Frodo", "lastName" : "Baggins" }' http://localhost:8080/people
Одинарные и двойные кавычки в противном случае работают так, как вы их используете, при этом '
разграничение начала строки» и "
появляются как буквальные символы внутри нее.
Обратите внимание , что вы должны указать путь к исполняемому файлу curl
или по крайней мере указать curl.exe
curl
сам по себе является псевдонимом Powershell для командлета Invoke-WebRequest
, который может выполнять большую часть функций программы cURL, но имеет совершенно другой синтаксис аргументов.
Кроме того, хотя вы можете вызывать Powershell из cmd
с помощью powershell -c <command>
, это действительно не поможет, поскольку в любом случае вам придется экранировать строку, используя глупый синтаксис cmd
.
Другой вариант - просто использовать подсистему Windows для Linux (WSL), которая позволяет запускать программы для Linux (включая версии bash
и curl
Ubuntu по умолчанию) непосредственно в Windows, не требуя виртуальной машины или перезагрузки. Полную информацию об этом можно найти по адресу https://msdn.microsoft.com/en-us/commandline/wsl/about, но краткая версия - попробуйте запустить bash
(или bash.exe
) из любой командной строки или окна Powershell, и он установит подсистему Linux или, по крайней мере, расскажет вам, как.