【发布时间】:2020-10-03 07:57:32
【问题描述】:
我在 Bash 脚本中偶然发现了一些奇怪的 heredoc 用法。一个简化的例子是这样的:
do_stuff() {
notify @<(cat <<- EOF
{
"key": "value",
<more JSON data>
}
EOF
)
}
@<(cat <<- EOF 部分有什么作用?它与普通的heredoc有什么不同?
【问题讨论】:
-
<<- EOF ... EOF是一个heredoc,一种将多行字符串(由省略号表示)作为stdin传递给一个命令的方法,在本例中为cat。<(command)扩展为一个文件名,您可以从中读取command的输出。因此,do_stuff的行为就像您使用 JSON 文本创建了一个文件(我们称之为input.json)并称为notify @input.json。
标签: bash io-redirection heredoc process-substitution