如何在流程替换中重定向?

How to redirect in a process substitution?

我试图将标准错误重定向到权限受限的文件。这就是我所做的:

exec 2> >(umask 077; exec > stderr.log)

我们的想法是将标准错误重定向到一个进程,更改 umask 并再次重定向到日志文件。

但是不行。按下 return.

后命令停止并以 141 终止

Bash手册在manual中没有定义"process list"。

谁能解释失败的原因?

你应该在子进程中使用cat来写入进入(...)进程的stdin的数据,这实际上是父进程的stderr:

exec 2> >(umask 077; cat > stderr.log)

进程替换将一个(或多个)进程的输出提供给另一个进程的标准输入。只需执行 exec > stderr.log 你只是将子进程的标准输出重定向到一个文件,但是你实际上并没有在 >(...)

中向标准输出写入任何内容