linux - <<$$$ 在 Unix shell 中是什么意思?

标签 linux shell curl google-http-client

我正在使用 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 分隔的文档到实用程序的标准输入。

utility <file其中 file包含 here-document 中的行,除了 shell 将对文档的文本进行变量扩展和命令替换(这可以通过在开始时将标记引用为 \MARKER'MARKER' 来防止)。

here-document 标记可以是任何单词,但是 $$$是一个非常不寻常的词选择。作为$在 shell 中有特殊含义,使用 $标记中的内容会让或可能会让读者感到困惑。

如果你输入

somecommand <<stuff

在 shell 中,shell 希望您提供 here-document 的其余内容,然后是单词 stuff自己在一条线上。这就是您在 here-document 中表示输入结束的方式。

关于linux - <<$$$ 在 Unix shell 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335436/

相关文章:

python - 使用 Python API 为 C 项目安装脚本

php - 在没有重定向的情况下打开 PHP 页面?

php - file_get_contents 返回 403 禁止

python - IO错误 : Can't read data (Can't open directory) - Missing gzip compression filter

linux - Grep 在反引号内寻找美元符号

c - 从 NETSTAT 的输出中删除

linux - 奇怪的终端模式,bash的错误?

exec 命令上的 Linux shell 脚本语法错误

android - 初始化.rc : service killed and restarts

php - 如何动态启用 SOAP、CURL、OPENSSL 扩展?