我想知道在发送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}"
Run Code Online (Sandbox Code Playgroud)
基本上单引号字符串可用于避免转义".
'{\n"some.*.something": "myvalue"\n}'
Run Code Online (Sandbox Code Playgroud)
但由于数据包含换行符转义序列,\n并且转义序列不会在单引号字符串中展开,因此问题中示例的作者使用ANSI C字符串$''.
使用ANSI C字符串可以获得两者:它们可以避免转义数据中的双引号,并且仍然可以扩展换行符转义序列.
shell扩展后,对于curl,数据如下所示:
{
"some.*.something": "myvalue"
}
Run Code Online (Sandbox Code Playgroud)
进一步阅读:https://www.gnu.org/software/bash/manual/html_node/Quoting.html
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |