В настоящее время я работаю со сценарием, который определяет ожидаемые значения конфигурации, считывает файл конфигурации для значений и, наконец, запрашивает любые значения, ожидаемые, но не указанные в файле конфигурации.
Пример ожидаемых элементов конфигурации:
username password command directories
Пример файла конфигурации:
username:bob
command:"rm -rf / && echo bwahahahahaha"
Пример запроса:
password? userinput
directories? userinput
Суть проблемы в том, что не все элементы конфигурации известны до выполнения,и может быть передан из текстового файла или из выходных данных другой программы, но может по-прежнему оставлять пробел в элементах конфигурации (вызывая приглашение).
[host]$ parametergeneratingscript.rb | paramaterreceivingscript.rb # still needs to prompt for password
Использование IO # tty?Я могу обнаружить ввод по каналу и, соответственно, прочитать из STDIN, но это происходит по всем приглашениям пользователя (которые также приходят из STDIN).Мне удобно переключаться между схемой config / prompt, но перед тем, как я убегу и разберусь с ней, мне было интересно, есть ли изящный способ "переключить" источник STDIN между вводом tty и piped?