<<$$$ 在 Unix shell 中是什么意思?
What does <<$$$ mean in a Unix shell?
我在工作中使用 google-http-client
进行项目,当我执行一些请求时,我的控制台上打印了以下内容。
curl -v --compressed -X POST -H 'Accept-Encoding: gzip' -H 'User-Agent: Google-HTTP-Java-Client/1.23.0 (gzip)' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -d '@-' -- 'http://example.com' << $$$
我想知道 << $$$
是什么意思。
如果我尝试 运行 此命令进入 linux 终端似乎 << $$$
使控制台等待更多输入。如果是这种情况,我如何向终端指定我已完成向它提供输入?
稍后编辑:我发现 curl 参数 -d @-
意味着来自标准输入的数据将为红色。
这是一个带有不寻常结束标记的"here-document"。
here-document 是一种重定向,通常看起来像
utility <<MARKER
document
content
goes here
MARKER
也就是说,它将 MARKER
分隔的文档提供给实用程序的标准输入。
This is like utility <file
where file
contains the lines in the here-document, except that shell will do variable expansion和文档文本上的命令替换(这可以通过在开始时将标记引用为 \MARKER
或 'MARKER'
来防止)。
here-document 标记可以是任何单词,但 $$$
是一个非常不寻常的单词选择。由于 $
在 shell 中具有特殊含义,因此在标记中使用 $
可能会混淆 reader.
如果你输入
somecommand <<stuff
在 shell 中,shell 希望您提供此处文档的其余内容,然后单独占一行的单词 stuff
。这就是您在 here-document 中表示输入结束的方式。
我在工作中使用 google-http-client
进行项目,当我执行一些请求时,我的控制台上打印了以下内容。
curl -v --compressed -X POST -H 'Accept-Encoding: gzip' -H 'User-Agent: Google-HTTP-Java-Client/1.23.0 (gzip)' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -d '@-' -- 'http://example.com' << $$$
我想知道 << $$$
是什么意思。
如果我尝试 运行 此命令进入 linux 终端似乎 << $$$
使控制台等待更多输入。如果是这种情况,我如何向终端指定我已完成向它提供输入?
稍后编辑:我发现 curl 参数 -d @-
意味着来自标准输入的数据将为红色。
这是一个带有不寻常结束标记的"here-document"。
here-document 是一种重定向,通常看起来像
utility <<MARKER
document
content
goes here
MARKER
也就是说,它将 MARKER
分隔的文档提供给实用程序的标准输入。
This is like utility <file
where file
contains the lines in the here-document, except that shell will do variable expansion和文档文本上的命令替换(这可以通过在开始时将标记引用为 \MARKER
或 'MARKER'
来防止)。
here-document 标记可以是任何单词,但 $$$
是一个非常不寻常的单词选择。由于 $
在 shell 中具有特殊含义,因此在标记中使用 $
可能会混淆 reader.
如果你输入
somecommand <<stuff
在 shell 中,shell 希望您提供此处文档的其余内容,然后单独占一行的单词 stuff
。这就是您在 here-document 中表示输入结束的方式。