Оболочка $'{\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