$'{}'在curl命令中是什么意思

时间:2018-10-19 18:13:24

标签: bash curl

我想知道$$在发送POST时在curl命令中是什么意思。

例如curl -X POST mydomain.com -d $'{\n"some.*.something": "myvalue"\n}'

我也试图在我的shell脚本中参数化myvalue,但是我做不到。有什么建议么?

2 个答案:

答案 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}\"}"