如何在Unix中将命令行输入传递给外部进程

时间:2012-09-04 02:22:37

标签: unix command-line input fork

我的程序运行(exec ..)一个外部程序。 运行时,外部程序会要求用户[是/否]继续下一步。

不是在命令行中键入[yes],而是如何从程序中将[Yes]传递给外部程序。

2 个答案:

答案 0 :(得分:1)

在命令行上提供“是”响应的经典方法是-y选项(通常使用并行-n选项来表示“否” - 请参阅fsck(1)

还有空间争辩说,运行程序应该是'是的,我的意思是做'操作'。但是,有时候指定“是的,我的意思是这样做”是有意义的(例如DBMS实例的一次性初始化)。

答案 1 :(得分:1)

除非外部程序支持相应的标志(请参阅@Jonathan Leffler的答案),否则您可以控制该程序的源并添加它,您必须模拟“是”输入。

选项:

  • 尝试通过将yes帮助应用程序的输出传递给它的stdin:yes | external_program来启动外部程序。 yes是一个简单的工具,如果你没有它,只是不断地将“y”写入它的标准输出。

  • 手动将“yes”写入外部程序的标准输入。

这两个选项都要求您以某种方式使用管道。有关如何执行此操作的详细信息,请参阅this