"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
已准备好阅读它正在写的内容)。
#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
已准备好阅读它正在写的内容)。