通常,我们可以将 stdout 传送到 stdin,如下所示:
echo "This is going to stdout" | grep -o going
假设grep
我编写了一个脚本,从 stdin 和 fd3 读取,然后从 stdin 输出一行,再从 fd3 输出一行。
是否存在某种语法可以让我设置满足以下条件的三个进程 A、B、C?
- 进程 A 的标准输出到达进程 C 的标准输入。
- 进程 B 的标准输出到达进程 C 的 FD 3。
通常,我们可以将 stdout 传送到 stdin,如下所示:
echo "This is going to stdout" | grep -o going
假设grep
我编写了一个脚本,从 stdin 和 fd3 读取,然后从 stdin 输出一行,再从 fd3 输出一行。
是否存在某种语法可以让我设置满足以下条件的三个进程 A、B、C?
通过流程替换:
where
</dev/null
可防止使用via的 stdinB
的(部分)输出。从 stdin 读取是比较常见的,因此需要谨慎。或者:A
B
其中
3<&-
关闭 fd3A
,从而防止A
消耗(部分)的输出B
。从 fd3 读取并不常见。如果您知道A
不会尝试从其 fd3 读取,那么您可以省略3<&-
,代码将变得更干净一些:无需流程替换:
防止
</dev/null 3<&-
消耗via的 stdin 或 fd3A
的(部分)输出。B
A