Ответ 1
Команда 'yes' будет эхом 'y' (или все, что вы просите) на неопределенный срок. Используйте его как:
yes | command-that-asks-for-input
или, если требуется капитал "Y":
yes Y | command-that-asks-for-input
Я работаю с экземплярами Amazon Linux, и у меня есть несколько сценариев для заполнения данных и установки всех программ, с которыми я работаю, но несколько программ спрашивают:
Do you want to continue [Y/n]?
и приостановите установку. Я хочу, чтобы во всех случаях автоматически отвечать на "Y", теперь я точно знаю, как это сделать.
Команда 'yes' будет эхом 'y' (или все, что вы просите) на неопределенный срок. Используйте его как:
yes | command-that-asks-for-input
или, если требуется капитал "Y":
yes Y | command-that-asks-for-input
echo y | command
должен работать.
Кроме того, некоторые установщики имеют флаг "auto-yes". Он -y
для apt-get
на Ubuntu.
У вас может не быть возможности установить Expect на целевом сервере. Это часто тот случай, когда кто-то пишет, скажем, работу Дженкинса.
Если это так, я хотел бы рассмотреть что-то вроде ответа на следующий вопрос на askubuntu.com:
https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line
printf 'y\nyes\nno\nmaybe\n' | ./script_that_needs_user_input
Обратите внимание, что в некоторых редких случаях команда не требует, чтобы пользователь нажимал ввод после символа. в этом случае оставьте символы новой строки:
printf 'yyy' | ./script_that_needs_user_input
Для полноты картины вы также можете использовать здесь документ:
./script_that_needs_user_input << EOF
y
y
y
EOF
Или, если ваша оболочка поддерживает строку здесь:
./script <<< "y
y
y
"
Или вы можете создать файл с одним вводом на строку:
./script < inputfile
Опять же, вся заслуга в этом ответе принадлежит автору ответа на askubuntu.com, Lesmana.
Хотя это может быть сложнее/тяжелее, чем вы хотите, один очень гибкий способ сделать это - использовать что-то вроде Expect (или одно из производных в другом языке программирования).
Expect - это язык, разработанный специально для управления текстовыми приложениями, и это именно то, что вы хотите сделать. Если вам в конечном итоге понадобится сделать что-то более сложное (например, с помощью логики, чтобы фактически решить, что делать/ответить дальше), Expect - это путь.
Если вы хотите просто принять значения по умолчанию, вы можете использовать:
\n | ./shell_being_run
Вам просто нужно поставить -y
с помощью команды установки.
Например: yum install <package_to_install> -y