PHP, shell_exec and an input

不打扰是莪最后的温柔 提交于 2019-12-11 02:09:02

问题


is it possible for shell_exec to execute a given command, where the initial command would ask the for a dynamic input then followed by a command that's based on the input itself.

i've researched for hours for the answer and i can't seem to find what i'm looking for.

i have a requirement that's similar to the idea of the example below and any help would be appreciated since

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

echoing x outputs :

your name is

as you can see i'm running multiple commands, but i do not know where i can insert inside the string command for the input.

note : i tried doing

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

echo $x;

output was :

Your name is :

i was expecting like

Your name is : Foo

clearly, something is wrong.


回答1:


I've come across the same problem as you with read other times. If you execute the same line on the terminal, the result is the same, so this is not a php issue, but a shell issue:

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

If you wrap the read inside a while .. do .. done, then it all works perfectly:

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

I don't know why this happens though.

Also you can try using proc_open and similar, and you'll get more control of the input/output streams, but I don't know whether they will work with the read issue.



来源:https://stackoverflow.com/questions/11737251/php-shell-exec-and-an-input

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!