Я создал действительно простой сценарий bash, который запускает несколько команд. одна из этих команд требует ввода данных пользователем во время выполнения. т.е. он спрашивает пользователя «вы хотите бла-бла-бла?», я хочу просто послать на это нажатие клавиши ввода, чтобы сценарий был полностью автоматизирован.
Мне не придется ждать ввода или чего-то еще во время выполнения, достаточно просто отправить нажатие клавиши, а буфер ввода обработает все остальное.
apt-get
, таков , правильным решением будет предварительно заполнить базу данных debconf вашими предпочтительными значениями; тогда он вас не спросит.Ответы:
или воспользоваться неявной новой строкой, которую генерирует echo (спасибо Марчину)
Теперь мы можем просто использовать
--sk
опцию:т.е.
sudo rkhunter --sk --checkall
источник
xxd
вы получите5c6e
шестнадцатеричный код, который является буквальным\n
. если вы это сделаете,echo | xxd
вы фактически получите шестигранник0a
. Так что я думаю использовать то, что нужно вашей программе.0a0a
что все еще не так, как предполагалось, добавляя-n
неявный перевод строки. Но вы, конечно же, правы,echo | ...
здесь отлично работает равнина . Обновлю свой ответ.5c6e
? Вы пропустили-e
, ваша оболочка илиecho
не рассматривает этот вариант?echo -ne "\n" | xxd 0000000: 0a
и ,echo -n "\n" | xxd 0000000: 5c6e
иecho "\n" | xxd 0000000: 5c6e 0a
я не видел никакой разницы между одинарными и двойными кавычками. Моя оболочка - это обычный bash, есть ли настройки, которые регулируют поведение таких основных функций?Вы можете найти эту
yes
команду полезной.Видеть
man yes
источник
yes
Я считаю это полезным.yes
отправляет на выходе. Прочтите страницу руководства.Вы можете просто использовать " да" .
источник
Вот пример использования
expect
:Проверьте:
man expect
для получения дополнительной информации.источник
Вы можете использовать expect (в man expect есть примеры).
источник