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 终端中运行此命令,似乎<< $$$使控制台等待更多输入。如果是这种情况,我如何向终端指定我已经完成了向它馈送输入?

后来编辑:我发现卷曲参数-d @-暗示数据将从标准变为红色。

这是一个带有不寻常结束标记的"here-document"。

here-document是一种重定向类型,通常看起来像

utility <<MARKER
document
content
goes here
MARKER

也就是说,它将一个由MARKER分隔的文档馈送到其标准输入的实用程序。

就像utility <filefile包含 here-文档中的行,除了 shell 将对文档文本进行变量扩展和命令替换(这可以通过在开头引用标记作为MARKER'MARKER'来防止(。

此处文档标记可以是任何单词,但$$$是一个非常不寻常的单词选择。 由于$在外壳中具有特殊含义,因此在标记中使用$可能会或可能会使读者感到困惑。

如果您键入

somecommand <<stuff

在命令行管理程序中,命令行管理程序希望您提供 HERE-文档的其余内容,然后将单词单独stuff在一行上。 这就是您在 here-文档中发出输入结束信号的方式。

相关内容

  • 没有找到相关文章

最新更新