Intereting Posts
Загрузка нескольких файлов с помощью AJAX и PHP Алгоритм естественной сортировки в PHP с поддержкой Unicode? Пользовательская кнопка добавления в корзину, чтобы добавить несколько товаров в корзину с количеством: woocommerce Конкатенация строк php, производительность ORDER_BY date LIMIT 1 Используйте переменную для определения функции PHP Как использовать API-интерфейс mediawiki для создания таблицы для вики-страницы в PHP передать массив из jQuery в PHP (и фактически перейти на страницу после отправки) Как изменить ограничение памяти php на GoDaddy Twitter API: Кто от меня отказался? Выпадающие значения 24 часа и 12-часовое отображение как защитить целые страницы, кроме страницы входа в symfony2? MySQL. Как выбрать строки, где долгота и широта разделены запятой на основе long / lat? Динамически получать имена столбцов в $ aColumns arrary в datatables как конвертировать из Unicode в UTF-8 в PHP?

PHP, shell_exec и ввод

возможно, для 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 .