问题
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