bash,tee in a named pipe?

时间:2013-01-16 02:00:49

标签: bash pipe tee

以下代码:

#!/bin/bash -x
mkfifo pipe 2>/dev/null
tee pipe >/dev/null &
cat pipe

运行时不产生输出,如下所示:

$ echo "hi" | ./test.sh
+ mkfifo pipe
+ cat pipe
+ tee pipe
$

为什么?我希望tee将stdin复制到命名管道(和/dev/null),然后cat将命名管道的内容复制到stdout。为什么不起作用?!

我正在尝试编写一个更大的bash脚本,我真的需要tee,其中包含/dev/null的其他内容。我将意外行为缩小到上面的例子。

1 个答案:

答案 0 :(得分:1)

当您对流程进行后台处理时,其标准输入将设置为/dev/null

#!/bin/bash -x
mkfifo pipe 2>/dev/null
cat - | tee pipe >/dev/null &
cat pipe

因此,您需要指定父级的stdin,在您的情况下,需要echo./test.sh之间的管道