gpt4 book ai didi

bash - curl 命令中的 $'{}' 是什么意思

转载 作者:行者123 更新时间:2023-11-29 09:11:40 25 4
gpt4 key购买 nike

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

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

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

最佳答案

$'{\n"some.*.something": "myvalue"\n}' 在传递给 curl 之前由 shell 解释。

$'...' 被称为 ANSI C strings .它们存在于 double-quoted strings 旁边的 shell 语言中“...”single-quoted strings '...'

由于数据本身 - 似乎是 json - 包含双引号,双引号字符串不能用于包装数据而不转义数据本身中的双引号。这意味着它需要看起来像这样:

"{\n\"some.*.something\": \"myvalue\"\n}"

基本上可以使用单引号字符串来避免转义 "

'{\n"some.*.something": "myvalue"\n}'

但由于数据包含换行符转义序列\n 并且转义序列不会在single quoted strings 中展开。 ,问题中示例的作者使用了 ANSI C 字符串 $''

使用 ANSI C 字符串,它们可以同时获得:它们可以避免转义数据中的双引号,并且仍然可以扩展换行符转义序列。

在 shell 展开后,对于 curl 数据如下所示:

{
"some.*.something": "myvalue"
}

进一步阅读:https://www.gnu.org/software/bash/manual/html_node/Quoting.html

关于bash - curl 命令中的 $'{}' 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52897902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com