传递答案时无限循环问题

时间:2015-06-17 08:07:56

标签: linux bash shell unix

我只希望将第一个答案传递给函数

echo "y" | install

并让用户选择回答下一个问题,但是当我这样做时,我会得到一个无限循环。

2 个答案:

答案 0 :(得分:6)

使用管道时,shell会更改,以便接收程序标准输入是管道,而不是其他任何内容。您不能将来自管道的输入与来自shell的非管道输入混合,这根本不可能。使用管道(或重定向)时,它是全部或全部。

关于install程序,您认为“无限循环”可能是它试图从标准输入(管道)读取,但是因为没有什么可以从管道读取它只会等待更多的输入到达,这不会发生。

答案 1 :(得分:2)

Joachim Pileborg的答案是完全正确的,但是对于某些用法,您可以使用{ echo y; cat } | install之类的内容发送前导y然后接受用户输入,但仅限于此在某些环境/用途中工作(例如,它不会逐个字符地报告给程序)。

如果你确实需要这样的东西,那么你可以考虑使用expect程序,因为它是为此而设计的(除其他外)。