Bash:从文件中读取stdin并将stdout写入文件

时间:2013-03-28 11:24:08

标签: linux bash

我正在尝试运行一个应用程序(让我们说top),这样它就会从文件读取stdin并从stdout写入另一个文件。

目前我有

mkfifo stdin.pipe
(tail -f stdin.pipe) | top

按预期工作,因为我可以echo对该文件进行操作,top将接收它。 但是我无法重定向顶部的输出。 我怎样才能做到这一点?

编辑:

好的,我们先刮一下。 我正在测试:

cat test.sh

echo Say something
read something
echo you said $something

2 个答案:

答案 0 :(得分:22)

让我们忘记top,这似乎是一个红色的鲱鱼。

要将stdin或stdout映射到文件,可以使用重定向:

some_program < input_file          # Redirects stdin

another_program > output_file      # Redirects stdout

甚至:

yet_another  < input_file > output_file

答案 1 :(得分:6)

  

有没有办法将stdin和stdout映射到文件并使用它们来控制cli应用程序?

听起来你正在寻找coprocesses,在4.0中添加到Bash。

coproc cat                    # Start cat in background
echo Hello >&${COPROC[1]}     # Say "Hello" to cat
read LINE <&${COPROC[0]}      # Read response
echo $LINE                    # cat replied "Hello"!

在4.0之前,您必须使用两个命名管道才能实现此目的。