Как написать скрипт bash, который вводит текст в программы

#python #bash

#python #bash

Вопрос:

Я пишу скрипт bash, который запускает python, а затем вводит несколько простых команд перед завершением работы. Я запустил python нормально, но как мне заставить скрипт имитировать ввод с клавиатуры в оболочке python, как если бы это делал человек?

Ответ №1:

Используйте документ «здесь». Это выглядит так

 command << HERE
text that someone types in
more text
HERE
  

Вам не обязательно использовать «ЗДЕСЬ», вы можете использовать что-то, что имеет немного больше
значение относительно контекста вашего кода.

Комментарии:

1. И для других новичков вроде меня, которые могут не понимать: вы можете изменить первый ЗДЕСЬ, но, если вы это сделаете, вам придется изменить два последних. На этой странице объясняется > tldp.org/LDP/abs/html/here-docs.html

2. Ого! да, это важно. извините.

Ответ №2:

Если вам действительно нужно имитировать ввод текста в интерпретаторе Python, а не передавать команду на python, вы, вероятно, можете сделать это с expect

expect должен быть доступен в репозитории вашего дистрибутива. Подробнее,

 man expect
  

Комментарии:

1. это хороший ответ. Вам придется использовать его, когда вы хотите делать разные вещи на основе того, что вернулось из Python. Он способен больше на диалог, чем на документ here, который на самом деле не «слушает» python.

Ответ №3:

Вы пробовали echo "Something for input" | python myPythonScript.py ?

Ответ №4:

Я не использовал python, но обычно я повторяю командную строку и передаю ее в двоичный файл интерпретатора следующим образом:

 $ echo '<?php echo "2 2n"; ?>' | /usr/bin/php
2 2
  

Я предполагаю, что вы можете сделать то же самое с помощью python.

Комментарии:

1. эти два работают нормально (ответ JBernardo тоже). Приведенный здесь документ представляет собой вариант, позволяющий немного упростить чтение нескольких строк.