Что означает $ '{}' в команде curl - PullRequest
0 голосов
/ 19 октября 2018

Мне интересно, что означает $ в команде curl при отправке POST.

например curl -X POST mydomain.com -d $'{\n"some.*.something": "myvalue"\n}'

Также я пытаюсь параметризовать myvalue в моем сценарии оболочки, однако я не могу это сделать.Какие-либо предложения?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Оболочка $'{\n"some.*.something": "myvalue"\n}' интерпретируется оболочкой перед передачей в curl.

$'...' - это так называемые строки ANSI C .Они существуют на языке оболочки рядом с строками в двойных кавычках "..." и строками в одинарных кавычках '...'.

Поскольку сами данные - что, кажется,be json - содержит двойные кавычки, строки с двойными кавычками нельзя использовать для переноса данных без экранирования двойных кавычек внутри самих данных.Это означает, что это должно выглядеть следующим образом:

"{\n\"some.*.something\": \"myvalue\"\n}"

В основном строки в одинарных кавычках могут использоваться, чтобы избежать экранирования ".

'{\n"some.*.something": "myvalue"\n}'

Но так как данные содержат символ перехода на новую строкупоследовательность \n и escape-последовательности не будут расширены в строки в одинарных кавычках , автор примера в вопросе использовал строки ANSI C $''.

Используя строки ANSI C, ониполучить оба: они могут избежать экранирования двойных кавычек в данных и по-прежнему расширять escape-последовательности новой строки.

После того, как оболочка расширила его, для curl данные выглядят так:

{
"some.*.something": "myvalue"
}

Далее читайте: https://www.gnu.org/software/bash/manual/html_node/Quoting.html

0 голосов
/ 19 октября 2018

Я до сих пор не знаю, что значит $ '{}'.Тем не менее, я получил myvalue для параметризации.

"{\"some.*.something\":\"${myValueParamerterized}\"}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...