Я создал действительно простой bash script, который запускает несколько команд. одна из этих команд требует ввода пользователя во время выполнения. то есть спрашивает пользователя "хотите ли вы blah blah blah?", я хочу просто отправить вводное нажатие на это, чтобы script полностью автоматизировался.
Мне не нужно ждать ввода или чего-либо во время выполнения, достаточно его просто отправить нажатие клавиши, и буфер ввода будет обрабатывать остальные.
echo -ne '\n' | <yourfinecommandhere>
или воспользовавшись неявной новой строкой, которую генерирует эхо (спасибо Marcin)
echo | <yourfinecommandhere>
5c6e
этот вывод в xxd
вы получите 5c6e
hex, который является литералом \n
. если вы просто делаете echo | xxd
вы на самом деле заканчиваете с гексом 0a
. Так что, я думаю, используйте то, что нужно вашей программе.
0a0a
что все еще не так, как задумано, добавление -n
исключает неявный перевод строки. Но ты, конечно, прав, откровенное echo | ...
отлично работает здесь. Буду обновлять мой ответ.
Вы можете найти полезную команду yes
.
См. man yes
yes
я нахожу это полезным.
Ниже приведен пример использования expect
:
#!/usr/bin/expect
set timeout 360
spawn my_command # Replace with your command.
expect "Do you want to continue?" { send "\r" }
Проверьте: man expect
для получения дополнительной информации.
Вы можете использовать expect (man expect поставляется с примерами).
Вы можете просто использовать yes.
# yes "" | someCommand
apt-get
, правильное решение состоит в том, чтобы предварительно заполнить базу данных debconf вашими предпочтительными значениями; тогда это не спросит вас.