我有一个从stdin读取并打印到stdout的程序。我希望能够重定向输出以在程序执行期间充当程序的输入。我不想使用expect
。下面是一个使用fifo的示例脚本,但它以某种方式存在缺陷,我无法理解。
mkfifo fifo
echo "Initial input" > fifo
cat fifo | ./my_program > fifo
rm -rf fifo
答案 0 :(得分:1)
此操作失败,因为echo
语句将永远等待读者附加。
另一种选择是:
mkfifo fifo
{ echo "Initial input"; cat fifo; } | ./my_program > fifo
由./my_program
决定:
如果程序未能执行上述任何操作,则会挂起或死锁。这是./my_program
的问题,而不是bash片段的问题。