我想知道$$在发送POST时在curl命令中是什么意思。
例如curl -X POST mydomain.com -d $'{\n"some.*.something": "myvalue"\n}'
我也试图在我的shell脚本中参数化myvalue
,但是我做不到。有什么建议么?
答案 0 :(得分:5)
$'{\n"some.*.something": "myvalue"\n}'
在传递给curl之前由外壳程序解释。
$'...'
称为ANSI C strings。它们以外壳语言存在,位于double-quoted strings "..."
和single-quoted strings '...'
旁边。
由于数据本身-似乎是json-包含双引号,因此如果不在数据本身中转义双引号,则不能使用双引号引起来的字符串来包装数据。这意味着它需要看起来像这样:
"{\n\"some.*.something\": \"myvalue\"\n}"
使用基本单引号的字符串可以避免转义"
。
'{\n"some.*.something": "myvalue"\n}'
但是由于数据包含换行符转义序列\n
,并且转义序列不会在single quoted strings中展开,因此该示例的作者使用了ANSI C字符串$''
。
使用ANSI C字符串,它们同时得到:它们可以避免转义数据中的双引号,并且仍然使换行符转义序列得到扩展。
在外壳展开后,为了卷曲,数据如下所示:
{
"some.*.something": "myvalue"
}
进一步阅读:https://www.gnu.org/software/bash/manual/html_node/Quoting.html
答案 1 :(得分:0)
我仍然不知道$'{}'是什么意思。但是,我确实得到了myvalue
的参数。
"{\"some.*.something\":\"${myValueParamerterized}\"}"