2

shell_exec 是否可以执行给定的命令,其中初始命令会要求动态输入,然后是基于输入本身的命令。

我已经研究了几个小时来寻找答案,但我似乎找不到我要找的东西。

我有一个类似于下面示例的想法的要求,任何帮助将不胜感激,因为

$x = shell_exec("read -p 'Enter your name : ' x; echo 'Your name is' : $x");

回显 x 输出:

你的名字是

如您所见,我正在运行多个命令,但我不知道可以在输入的字符串命令中插入的位置。

注意:我试着做

$x = shell_exec("echo 'Foo' | read -p 'Enter your name : ' x; echo 'Your name is :' $x");

echo $x;

输出是:

你的名字是 :

我期待像

你的名字是:傅

很明显,有些不对劲。

4

1 回答 1

1

我在read其他时候遇到过和你一样的问题。如果在终端执行同一行,结果是一样的,所以这不是php问题,而是shell问题:

$ echo 'Foo' | read -p 'Enter your name : ' x; echo "Your name is : $x"
Your name is : 

如果将read内部包装 a while .. do .. done,则一切正常:

$ echo 'Foo' | while read -p 'Enter your name : ' x; do echo "Your name is : $x" ; done
Your name is : Foo

我不知道为什么会这样。

您也可以尝试使用proc_open和类似的,您将获得对输入/输出流的更多控制,但我不知道它们是否能解决这个read问题。

于 2012-07-31T10:32:04.700 回答