"var=>(...) somecommand" 是如何工作的?

How does "var=>(...) somecommand" work?

  #1   
   f() {
        cat "" >"$x"
    }
  #2   
    x=>(tr '[:lower:]' '[:upper:]') f <(echo 'hi there')

在#2中哪个部分先执行? x=>(tr '[:lower:]' '[:upper:]') 或 f <(echo 'hi there') 。 #2 是复合化合物还是单个命令?

一条命令可以有任意数量的var=value个前缀;这些变量在该单个命令的持续时间内被导出到环境中,并且以后不存在。这不是 bash 特定的,而是 POSIX sh 标准的一部分。

"Which part is executed first?" 不是一个有意义的问题。其 FIFO 的文件名(是 /dev/fd 条目和匿名 FIFO,如果 OS 允许相同)存储在 X 中的进程替换首先是 started,但执行是异步。 (也就是说,因为写 hi there 的进程替换的输出被重定向为 运行 tr 的输入,带有 echo 的那个必须阻塞直到 tr 已准备好阅读它正在写的内容)。