我想知道在发送POST时,curl命令中的$是什么意思。
例如 curl -X POST mydomain.com -d $'{\n"some.*.something": "myvalue"\n}'
我也试图myvalue
在我的shell脚本中参数化,但是我做不到。有什么建议么?
在$'{\n"some.*.something": "myvalue"\n}'
它被传递给卷曲之前得到由shell来解释。
$'...'
所谓的ANSI C字符串。它们在shell语言中位于双引号字符串 "..."
和单引号字符串 旁边'...'
。
由于数据本身(似乎是json)包含双引号,因此在不将双引号转义为数据本身的情况下,不能使用双引号字符串来包装数据。这意味着它需要如下所示:
"{\n\"some.*.something\": \"myvalue\"\n}"
基本上可以使用单引号引起来的字符串来避免转义"
。
'{\n"some.*.something": "myvalue"\n}'
但是由于数据中包含换行符转义序列,\n
并且转义序列不会在单引号引起的字符串中扩展,因此问题的示例作者使用ANSI C字符串$''
。
使用ANSI C字符串,它们可以同时获得:它们可以避免转义数据中的双引号,并且仍然使换行符转义序列得到扩展。
外壳展开后,为了卷曲,数据如下所示:
{
"some.*.something": "myvalue"
}
进一步阅读:https : //www.gnu.org/software/bash/manual/html_node/Quoting.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句