我试图运行一个应用程序(让我们说top
),所以它会从一个文件读取标准input,并从标准输出写入另一个文件。
目前我有
mkfifo stdin.pipe (tail -f stdin.pipe) | top
它按预期工作,然后我可以echo
一些文件,顶部会收到。 但我无法redirect顶部的输出。 我怎样才能做到这一点?
编辑:
好吧,让我们从头开始。 我正在testing这个:
cat test.sh echo Say something read something echo you said $something
让我们忘记top
,这似乎是一个红色的鲱鱼。
要将stdin或stdout映射到文件,可以使用重定向:
some_program < input_file # Redirects stdin another_program > output_file # Redirects stdout
甚至:
yet_another < input_file > output_file
有没有一种方法可以将stdin和stdout映射到文件,并使用它们来控制cli应用程序?
这听起来像你正在寻找coprocesses ,添加到Bash在4.0。
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之前,你必须使用两个命名管道来实现这一点。