Пример №1:
Создайте файл bash со следующим сценарием. Когда вы запустите сценарий, он будет продолжаться до тех пор, пока пользователь не нажмет любую клавишу. Скрипт будет ждать ввода пользователя каждые 3 секунды, и если пользователь не нажмет ни одной клавиши, он распечатает сообщение, в ожидании нажатия клавиши .
#! / bin / bash
выбросил 'Нажмите любую клавишу чтобы продолжить'
в то время как [ правда ];делать
читать -t 3 -n 1
если [ $?знак равно0 ];тогда
выход;
еще
выбросил 'ожидание нажатия клавиши'
быть
сделано
Запускаем скрипт.
$трепатьkey1.sh
Выход:
Пример №2:
Создайте файл bash со следующим сценарием. В этом примере используется бесконечный цикл while, который завершится, когда пользователь нажмет «q». Если пользователь нажимает любую клавишу без «q», значение переменной счетчика будет увеличено на 1 и напечатано значение.
#! / bin / bashвыбросил 'Нажмите' q 'для выхода'
считатьзнак равно0
в то время как:;делать
читать -n 1к<&1
если [[ $ k= q]];тогда
printf ' пВыход из программы п'
перерыв
еще
((считатьзнак равно$ count+1))
printf ' пИтерация для$ countраз п'
выбросил 'Нажмите' q 'для выхода'
быть
сделано
Запускаем скрипт.
$трепатьkey2.sh
Выход:
Пример № 3:
Создайте файл bash со следующим сценарием, который будет выполнять различные типы задач в зависимости от клавиши, нажатой пользователем. Если пользователь нажимает «1», он добавляет два аргумента командной строки и печатает. Если пользователь нажимает «2», он вычитает два аргумента командной строки и печатает. Сценарий будет работать непрерывно, пока пользователь не нажмет «3».
#! / bin / bashv1знак равно1 доллар
v2знак равно2 доллара
в то время как:
делать
выбросил '1. Добавление'
выбросил '2. Вычитание '
выбросил '3. Покидать'
выбросил -n 'Тип 1, 2 или 3:'
читать -n 1 -t пятнадцатьк
printf ' п'
кейс $ а в
1* ) выбросил '$ v1+$ v2знак равно$ (($ v1 + $ v2)) ';;
2* ) выбросил '$ v1-$ v2знак равно$ (($ v1- $ v2)) ';;
3* ) выход 0;;
* ) выбросил 'Попробуйте снова.';;
esac
сделано
Запустите сценарий с двумя числовыми значениями аргументов.
$трепатьkey3.sh35 год пятнадцатьВыход:
Пример №4:
Создайте файл bash со следующим сценарием. Сценарий завершится, когда пользователь нажмет клавишу ESC. Этот сценарий будет печатать клавиши, нажатые пользователем, пока не будет нажата клавиша ESC.
#! / bin / bashпользовательский вводзнак равно''
выбросил 'Нажмите клавишу ESC, чтобы выйти'
# читать один символ
в то время как читать -р -n1ключ
делать
# если input == клавиша ESC
если [[ $ ключ== $'А также' ]];
тогда
перерыв;
быть
# Добавить ключ к переменной, которую нажимает пользователь.
userinput + =$ ключ
сделано
printf ' пВы набрали:$ userinput п'
Запускаем скрипт.
$трепатьkey4.shВыход:
Пример 5:
Создайте файл bash со следующим кодом, который будет ждать, пока клавиша ENTER завершит сценарий. Сценарий принимает имя сервера в качестве входных данных и будет пытаться проверить связь с сервером каждые 2 секунды. Если команда ping получает ответ от сервера, она завершает выполнение сценария, отображая вывод, в противном случае она будет ждать ответа пользователя или клавиши ENTER, напечатав сообщение «Попытка соединиться с…».
#! / bin / bashвыбросил 'Введите адрес сервера, который вы хотите пинговать'
читатьсервер
в то время как ! пинг -c 1 -n -В 2 $ сервер
делать
выбросил 'Пытаюсь установить связь с$ сервер'
выбросил 'Нажмите [ENTER] для завершения'
читать -s -N 1 -t 1ключ
если [[ $ ключ== $' x0a' ]];# если ввод == клавиша ENTER
тогда
выход 0
быть
сделано
printf '% s п' '$ серверэто работает'
Запускаем скрипт.
$трепатьkey5.shВыход:
Заключение:
В этом руководстве показано, как можно разными способами написать сценарий bash, который будет ожидать ввода пользователя для выполнения какой-либо конкретной задачи или завершения сценария. Надеюсь, после отработки приведенных выше примеров вы сможете написать сценарий таким образом, чтобы он мог ждать любого нажатия клавиши и выполнять конкретную задачу на основе клавиши, нажатой пользователем.