Допустим, я пишу скрипт bash myscript.bash, который ожидает один аргумент ($ 1). Одна из вещей, которую он делает, это вызывает wrapped.py, скрипт на python, который запрашивает у пользователя четыре ввода. Я хочу отправить $ 1 для первого из этих входов автоматически, а затем попросить пользователя сделать все остальное как обычно.
Как я могу это сделать? Я попытался echo $1 | wrapped.py < /dev/stdin
, но это передает EOF для второго ввода, запрошенного wrapped.py, вызывая ошибку Python EOFError. Это работает, если я эхо-е "$ 1 \ na \ nb \ nc", то есть эхо всех четырех входов ... но я хочу, чтобы пользователю было предложено для других трех. Я мог бы написать полноценную оболочку для скрипта Python, но это создает проблемы с обслуживанием, поскольку обновление, например, wrapped.py может, например, добавить пятый вопрос.
Вот как выглядит фактическая ошибка:
$ echo 'test_app' | django-startproject.py test_app tmp < /dev/stdin
Project name [PROJECT]: Project author [Lincoln Loop]: Traceback (most recent call last):
File "/usr/local/bin/django-startproject.py", line 7, in <module>
execfile(__file__)
File "/home/rich/src/ll-django-startproject/bin/django-startproject.py", line 9, in <module>
main()
File "/home/rich/src/ll-django-startproject/bin/django-startproject.py", line 5, in main
start_project()
File "/home/rich/src/ll-django-startproject/django_startproject/management.py", line 44, in start_project
value = raw_input(prompt) or default
EOFError: EOF when reading a line