возможно, для shell_exec выполнить заданную команду, где начальная команда запросит динамический ввод, а затем команду, основанную на самом входе.
я исследовал часами ответа, и я не могу найти то, что ищу.
У меня есть требование, которое похоже на идею приведенного ниже примера, и любая помощь будет оценена с учетом
$x = shell_exec("read -p 'Enter your name : ' x; echo 'Your name is' : $x");
эховые выходы:
твое имя
так как вы можете видеть, что я запускаю несколько команд, но я не знаю, где я могу вставлять внутри строковой команды для ввода.
примечание: я пробовал делать
$x = shell_exec("echo 'Foo' | read -p 'Enter your name : ' x; echo 'Your name is :' $x");
echo $x;
выход был:
Твое имя :
я ожидал, как
Ваше имя: Foo
очевидно, что-то не так.
Я сталкивался с той же проблемой, что и вы, когда read
другие времена. Если вы выполняете ту же строку на терминале, результат будет таким же, поэтому это не проблема php, а проблема с оболочкой:
$ echo 'Foo' | read -p 'Enter your name : ' x; echo "Your name is : $x" Your name is :
Если вы закроете read
в то 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
.