2015-10-14 3 views
1

У меня есть проблема, которая действительно не знает, как спросить. Я постараюсь объяснить как можно лучше.Автоматизация записи для терминала

Мне нужно автоматизировать процесс установки с помощью сценария bash. В середине процесса я делаю вызов сценария Python с именем configure.py. Этот сценарий ожидает ввода терминала.

Есть ли способ вызвать скрипт, передав аргументы терминала, ожидающие?

Determining the layout of your Qt installation... 
This is the GPL version of PyQt 4.11.4 (licensed under the GNU General Public 
License) for Python 2.7.9 on linux2. 

Type 'L' to view the license. 
Type 'yes' to accept the terms of the license. 
Type 'no' to decline the terms of the license. 

Do you accept the terms of the license? yes 

Огромное спасибо.

+1

Поиск "ожидать для python" для подсказок. – Dummy00001

ответ

1

Сценарий PyQt конфигурирования имеет опцию, которая автоматически подтверждает принятие лицензии:

python configure.py --confirm-license 

Поскольку нет других частей процесса установки PyQt, требующих ввода пользователем, это должно быть все, что вам нужно. Для получения дополнительной информации см. Installing PyQt4 в документах PyQt.

+0

Спасибо, я искал проблему PyQt! ;) –

3

Хотя особенно трудный сценарий мог бы сделать некоторые магии явно читаться из терминала, а не stdin, наверняка вы могли бы просто труба для сценария с использованием синтаксиса Баш трубопровода:

echo yes | python configure.py 

или, если вы предпочитаете, то «одна команда» версия с использованием bash здесь строки синтаксис:

python configure.py <<<yes 

Наконец, если вам необходимо предоставить несколько строк ввода, вероятно, самый простой подход в Bash Heredoc синтаксис:

# Remove the single quotes if you need to do variable interpolation in the 
# heredoc; the delimiter ENDOFINPUT is arbitrary, it just has to be used 
# (with or without single quotes) after the `<<` operator, and w/o quotes 
# at the end of the input to terminate the heredoc 
python configure.py <<'ENDOFINPUT' 
yes 
anotherresponse 
andyetanother 
ENDOFINPUT 
+0

Вместо этого это решение может работать для меня, я искал решение для установки PyQt. –

0

Вы можете внести свой вклад, используя пип оператор (спасибо ShadowRanger) Пример:

echo "yes" | command 
echo "pass" | ssh [email protected] 
+1

Неправильный оператор трубы, от команды до команды '' ', а не'> '('> 'будет создавать новый файл с именем' command' в первом случае, содержащий строку 'yes \ n'). – ShadowRanger

+0

обновлено правильно – nabeel

Смежные вопросы