Если скрипт использует свой stdin для чтения данных, вы использовали эту строку
python script.py < "John"
должен сработать, за исключением того, что он пытается отправить содержимое файла с именем John
на стандартный сценарий сценария (и не получится, если такого файла нет; я полагаю, это случилось с вами). В Bash есть способ отправить строку, хотя здесь:
python script.py <<< "John"
Новая строка добавляется автоматически. Другой способ с конвейером:
printf '%s\n' "John" | python script.py
и это должно работать даже в простой sh
. Так должно это:
echo "John" | python script.py
Обратите внимание, что printf
в целом лучше, чем echo
, но с этой фиксированной строкой обе команды должны работать правильно.
Ничто из вышеперечисленного не будет работать, если сценарий напрямую использует свой управляющий терминал (/dev/tty
) вместо своего стандартного ввода для чтения ответа пользователя. Если так, expect
(как в этом другом ответе) будет полезно. Вы не показали нам сам сценарий, поэтому невозможно сказать наверняка; ты должен знать.