2012-07-12 209 views
0

我有一个shell脚本,需要在运行时输入。是否有可能在exec()期间将输入回显到shell脚本中?在PHP中运行交互Shell脚本

IE在一个正常的外壳: $ ./script.sh

输入:你最喜欢的颜色:输入您的答案]红

输出:你最喜欢的颜色是红色。

+0

你真的想用shell脚本来做到这一点吗? – 2012-07-12 20:50:38

+0

Shell脚本已经开发出来并用于测试外部硬件,并需要按键才能移动到下一个测试。我想我可以通过这种方式找到解决办法,但是,如果可能的话,我只是好奇而已。我可能会最终将每个测试分解成它自己的脚本并输出结果。 – Fostah 2012-07-12 20:54:12

+0

所以没事做机智我最喜欢的颜色然后 - 叹息 – 2012-07-12 20:55:45

回答

1

我不确定你要问哪一方,但我仍然会回答。

从PHP,你可以从shell读取用户输入。可以使用readline()函数或简单地使用流来完成。根据您使用的PHP版本和环境,它可以是php:// input或php:// stdin。你可以简单地fopen()并像往常一样阅读。

如果要与正在调用的shell脚本交互,则需要使用proc_open()而不是exec。这有点麻烦,但没有办法。该功能将为您提供单独的输入,输出和错误流,您可以根据需要阅读它们以完成您的任务。

+0

proc_open听起来像我在找什么。我基本上希望能够运行一个shell脚本,查看输出,输入动态输入,重复。 – Fostah 2012-07-12 21:05:19

+0

是的,这是你需要的。如果可能的话,最好在shell函数中使用参数,因为它更稳定,但有些情况下它不是一个选项。 – 2012-07-13 12:14:05