
Я пытаюсь автоматизировать установку программы через скрипт оболочки. Есть несколько шагов, которые требуют взаимодействия с пользователем из командной строки (подтверждение, да/нет и т. д.). Как лучше всего обойти это? Я знаю, что одна из возможностей — использовать скрипт 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 — это то, что вам нужно.