Параметр
-d
curl
дополнительно позволяет вам передавать данные через файл (его содержимое ), а не по прямому значению.
Итак Что касается различия guish прямых значений (по умолчанию) от значения, представляющего имя файла , имена файлов должны начинаться с префикса @
(что является общепринятым соглашением в мире Unix).
В мире Unix -
- это часто используемое соглашение для представления stdin (стандартный ввод) в контекстах, где ожидаются имена файлов (в зависимости от контекста он также может представлять stdout (стандартный вывод).
Таким образом, @-
фактически инструктирует curl
прочитать аргумент -d
из stdin , который в PowerShell (всегда) предоставляется через конвейер (|
).
В вашей команде PowerShell @-
должно быть в кавычках ('@-'
), потому что @
без кавычек в начале аргумента является метасимвол , т.е. символ со специальным синтаксисом c значение (это выполняет несколько функций, включая splatting ).
В качестве альтернативы, вы можете экранировать только сам @
: `@-
(escape-символ PowerShell - `
, так называемый обратный апостроф).