Ruby wrapper (open3) - как перехватить живой пользовательский ввод во время выполнения скрипта? - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь написать скрипт-обертку, чтобы связать воедино функцию из 4 связанных скриптов.Обычно мы должны запустить эти 4 сценария, чтобы достичь определенного состояния, но я бы хотел заключить эти 4 сценария в 1.

Однако все эти сценарии требуют ввода данных пользователем, в частности, да / нетподсказки на нескольких этапах исполнения.Я все еще хотел бы, чтобы пользователь ответил на эти вопросы и чтобы действующий скрипт отвечал соответствующим образом.

Однако я не вижу способа, чтобы это могло исходить от пользователя во время выполнения скрипта.Все примеры показывают, что stdin передается в сценарий перед выполнением, например:

o, s = Open3.capture2("factor", :stdin_data=>"42")
p o #=> "42: 2 3 7\n"

Интересно, может быть, определение pipe означает, что оно не может быть получено от реального stdin, такого как клавиатура, но должно бытьпередано (передано) до исполнения.Это правильное предположение?И если так - есть ли способ обернуть скрипты в ruby ​​таким образом, чтобы они все еще могли принимать и реагировать на ввод пользователя?Я также попробовал обратные пометки безрезультатно, я начинаю задаваться вопросом, если это невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...