Как обойти взаимодействие с пользователем в скрипте?

Как обойти взаимодействие с пользователем в скрипте?

Я пытаюсь автоматизировать установку программы через скрипт оболочки. Есть несколько шагов, которые требуют взаимодействия с пользователем из командной строки (подтверждение, да/нет и т. д.). Как лучше всего обойти это? Я знаю, что одна из возможностей — использовать скрипт expect. Просто хотел узнать, есть ли лучший/более чистый способ сделать это.

решение1

Если взаимодействие простое, т.е. выполняется только чтение из стандартного ввода, можно просто отправить определенные строки на вход программы:

( echo yes ; echo 1024; echo yes ) | install.sh

решение2

Если вы хотите сделать что-то, что не просто считывает данные со стандартного ввода (например, вход по ftp), вам нужно будет использоватьожидать.

решение3

Из другой ветки:

Если вашей команде не важно, как быстро вы вводите данные, и вам не нужно с ней взаимодействовать, то вы можете использовать heredoc.

Пример:

#!/bin/bash
command_you_want_to_execute <<EOD
interaction_1
intereaction_2
EOD

Если вам необходимо ветвление на основе выходных данных программы или если ваша программа хоть как-то чувствительна к времени выполнения ваших команд, то Expect — это то, что вам нужно.

Связанный контент