Чтение ввода командной строки пользователя с PHP с readline, но bash не является оболочкой по умолчанию
Я написал PHP-скрипт и пытаюсь читать пользовательский ввод из командной строки. Я начал с
$myVar = exec('read myVar; echo $myVar;');
Который работал нормально, но при вводе ввода клавиши со стрелками не работали так, как это должно было бы работать. Я узнал, что это можно решить с помощью переключателя-e, поэтому он стал:
$myVar = exec('read -e myVar; echo $myVar;');
Теперь это сработало как шарм в моей среде разработки, но, к сожалению, похоже, что в нашей производственной среде PHP не использует оболочку bash и не поддерживает переключатель-e, и это наверное, это не так просто изменить.
Согласно третьему ответу на этот вопрос можно заставить PHP использовать bash, так что получилось:
$myVar = exec('/bin/bash -c "read -e myVar; echo $myVar"');
Теперь, к сожалению, это не работает, так как переменная myVar
не установлена.
Когда я запускаю команды непосредственно из командной строки $myVar
(переменная оболочки) устанавливается с любым моим входом, и, следовательно, echo'ed
Однако при использовании опции-c, либо в PHP-exec (), либо непосредственно в командной строке, как это:
/bin/bash -c "read -e myVar; echo $myVar";
$myVar
не задается вообще, и пустая строка (или то, что было предыдущим значением $myVar
) является echo'Ed
Что я здесь делаю не так?