@ <(cat <<-EOF在Bash中做什么?

行星

我在Bash脚本中偶然发现了一些奇怪的Heredoc用法。一个简化的例子是这样的:

do_stuff() {
      notify @<(cat <<- EOF
  {
      "key": "value",
       <more JSON data>
  }
  EOF
               )
  }

@<(cat <<- EOF零件做什么?与常规的Heredoc有何不同?

卡米尔库克

<(...)是一个过程替代Bash在某个目录中创建一个fifo,然后在其中运行命令,<(...)并用fifo名称替换该表达式。进程替换具有(奇怪的)生存期规则,但是它们通常一直有效到命令或行结束。例如:

$ cmd=<(echo 123); echo cmd=$cmd; cat $cmd
cmd=/dev/fd/63
123

<<-EOF这里的文件如果-分隔符的前面,则将忽略包括分隔符的行在内的后续行上的前导选项卡(注意:stackoverflow不会保留选项卡)。

$ echo -e '
cat <<EOF
\tblabla
EOF
cat <<-EOF
\t\t\t\t\tblabla
\t\t\t\t\t\t\t\t\t\t\t\t\tEOF
' > file.sh
$ bash ./file.sh
      blabla
blabla

notify @<(...)只是用<(...)内部部分代替/dev/fd/<number>并执行notify @/dev/fd/<number>可能@用于notify处理以指示它应该从文件读取,而其余参数是文件名。然后cat,将输出绑定到/dev/fd/<number>通过流程替换创建的fifo的流程,cat流程将{ <more json data> }在标准输入中接收此处文档的内容cat输出标准输入到输出,然后我猜notify读取fifo并接收字符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

cat> somefile <<“ EOF”或EOF,在bash shell上产生不同的结果

来自分类Dev

为什么不使用<< EOF代替cat << EOF?

来自分类Dev

为什么不使用<< EOF代替cat << EOF?

来自分类Dev

“ |”是什么 在cat命令的参数之间做什么?

来自分类Dev

为什么小于号不能代替bash中的cat?

来自分类Dev

在PowerShell中相当于Bash的cat -n是什么?

来自分类Dev

为什么bash删除$(cat文件)中的\ n?

来自分类Dev

Linux中的cat *命令

来自分类Dev

-在cat文件中-

来自分类Dev

目录中的cat文件

来自分类Dev

Cat 中的转义变量

来自分类Dev

为什么ERR陷阱会从“ echo <(cat << EOF”

来自分类Dev

bash 脚本 cat 和 echo

来自分类Dev

&>在bash中做什么?

来自分类Dev

cat test和cat <test有什么区别?

来自分类Dev

做diff <(cat old)<(cat new)时使用什么fd?

来自分类Dev

cat -b和cat -n和有什么区别-cat -s有什么区别

来自分类Dev

在zsh中,cat <(cat)与cat |之间的区别 猫vs猫=(猫)?

来自分类Dev

为什么“ cat / dev / urandom”挂了我的bash脚本?

来自分类Dev

为什么“ cat a.txt | xargs vi”破坏了bash?

来自分类Dev

Linux命令行中cat> filename和cat >> filename之间有什么区别

来自分类Dev

cd /./在bash中做什么

来自分类Dev

bash中的“ cat -A”和vim中的“设置列表”之间的区别

来自分类Dev

在bash脚本中使用cat非常慢

来自分类Dev

echo start | cat >>登录bash的意义

来自分类Dev

上次创建的远程文件上的Bash cat

来自分类Dev

Bash Cat文件到终端中心

来自分类Dev

Bash 脚本 - 使用 cmd 而不是 cat

来自分类Dev

如何在cat << EOF> Test.html中使用bash $ variable