【发布时间】:2020-12-17 19:43:42
【问题描述】:
我正在尝试重定向程序的标准输入和标准输出。我目前正在对此进行 bash 模型试验,但出现了一些奇怪的行为。
我有以下几点:
mkfifo in
mkfifo out
我还有以下脚本,test.sh
#!/bin/bash
while read line; do
echo "I read ${line}"
done < /dev/stdin
在 1 号航站楼,我执行以下操作:
tail -f out
在 2 号航站楼,我执行以下操作:
./test.sh < in > out
在 3 号航站楼,我执行以下操作:
echo "foo" > in
echo "bar > in
但是,不是在终端 1 中看到“I read foo”后跟“I read bar”,而是在第一个回显之后,第二个回显之后的两行,然后终端 2 中的 test.sh 程序退出.如何防止退出,以便继续发送 test.sh 输入?另外,当程序终止时,我怎样才能将 test.sh 的输出刷新到终端 1 中的 tail -f,而不是缓冲然后转储?
【问题讨论】: