我在Bash脚本中偶然发现了一些奇怪的Heredoc用法。一个简化的例子是这样的:
do_stuff() { notify @<(cat <<- EOF { "key": "value", <more JSON data> } EOF ) }
@<(cat <<- EOF
部分做什么?与常规的Heredoc有何不同?
我在Bash脚本中偶然发现了一些奇怪的Heredoc用法。一个简化的示例是这样的:do_stuff(){notify @
<(...)
是process substitution。 Bash在某个目录中创建一个fifo,然后在<(...)
中运行命令,并将表达式替换为fifo名称。进程替换具有(奇怪的)生存期规则,但是它们通常一直有效到命令或行结束。例如: