- Bash, дождитесь нажатия клавиши — подсказка для Linux
- Пример №1:
- Пример №2:
- Пример № 3:
- Пример №4:
- Пример № 5:
- Вывод:
- Bash wait for keypress
- Example#1:
- Example#2:
- Example#3:
- Example#4:
- Example#5:
- Conclusion:
- About the author
- Fahmida Yesmin
- Как в Bash реализовать «Нажмите любую кнопку для продолжения»
- Связанные статьи:
- Bash подождите нажатия клавиши
- Пример №1:
- Пример №2:
Bash, дождитесь нажатия клавиши — подсказка для Linux
Команда `read` используется для ввода данных пользователем в сценарий bash. Мы можем вводить данные в сценарии bash, используя различные типы параметров с командой чтения. Иногда нам нужно написать сценарий таким образом, чтобы он работал до тех пор, пока не будет нажата определенная клавиша или конкретный скрипт будет выполняться на основе определенного ключа, или программа будет ждать определенное количество времени, пока любая клавиша не будет нажал. Как вы можете написать сценарий bash для ожидания какого-либо конкретного ключа или любого ключа к некоторым задачам, показано в этом руководстве на различных примерах.
Пример №1:
Создайте файл bash со следующим сценарием. Когда вы запустите сценарий, он будет продолжаться до тех пор, пока пользователь не нажмет любую клавишу. Сценарий будет ожидать ввода пользователя каждые 3 секунды, и если пользователь не нажмет ни одной клавиши, он распечатает сообщение: «в ожидании нажатия клавиши“.
#! / bin / bash
эхо «Нажмите любую клавишу для продолжения»
пока [ истинный ] ; делать
читать -t 3 -n 1
если [ $? = 0 ] ; потом
выход ;
еще
эхо «ожидание нажатия клавиши»
фи
сделано
Пример №2:
Создайте файл bash со следующим сценарием. В этом примере используется бесконечный цикл while, который завершится, когда пользователь нажмет «q». Если пользователь нажимает любую клавишу без «q», значение переменной счетчика будет увеличено на 1 и напечатано значение.
#! / bin / bash
эхо «Нажмите q, чтобы выйти»
считать = 0
пока :; делать
читать -n 1 k 1
если [ [ $ k = q ] ] ; потом
printf » \ п Выход из программы \ п »
сломать
еще
( ( считать = $ count + 1 ) )
printf » \ п Итерация для $ count раз \ п »
эхо «Нажмите q, чтобы выйти»
фи
сделано
Пример № 3:
Создайте файл bash со следующим сценарием, который будет выполнять различные типы задач в зависимости от клавиши, нажатой пользователем. Если пользователь нажимает «1», он добавляет два аргумента командной строки и печатает. Если пользователь нажимает «2», он вычитает два аргумента командной строки и печатает. Сценарий будет работать непрерывно, пока пользователь не нажмет «3».
#! / bin / bash
v1 = $1
v2 = $2
пока :
делать
эхо «1. Добавление»
эхо «2. Вычитание »
эхо «3. Покидать»
эхо -n «Тип 1 или 2 или 3:»
читать -n 1 -t 15 а
printf » \ п »
дело $ а в
1 * ) эхо » $ v1 + $ v2 = $ (($ v1 + $ v2) )» ;;
2 * ) эхо » $ v1 — $ v2 = $ (($ v1- $ v2) )» ;;
* ) эхо «Попробуй еще раз.» ;;
esac
сделано
Запустите сценарий с двумя числовыми значениями аргументов.
Пример №4:
Создайте файл bash со следующим сценарием. Сценарий завершится, когда пользователь нажмет клавишу ESC. Этот сценарий будет печатать клавиши, нажатые пользователем, пока не будет нажата клавиша ESC.
#! / bin / bash
пользовательский ввод = «»
эхо «Нажмите клавишу ESC, чтобы выйти»
# читать один символ
пока читать -р -n1 ключ
делать
# если input == клавиша ESC
если [ [ $ ключ == $ ‘\ e’ ] ] ;
потом
сломать ;
фи
# Добавить ключ к переменной, которую нажимает пользователь.
userinput + = $ ключ
сделано
printf » \ п Вы набрали: $ userinput \ п «
Пример № 5:
Создайте файл bash со следующим кодом, который будет ждать, пока клавиша ENTER завершит сценарий. Сценарий принимает имя сервера в качестве входных данных и будет пытаться проверить связь с сервером каждые 2 секунды. Если команда ping получает ответ от сервера, она завершает скрипт, отображая вывод в противном случае он будет ждать ответа пользователя или клавиши ENTER, напечатав сообщение «Попытка подключения с…».
#! / bin / bash
эхо «Введите адрес сервера, который вы хотите пинговать»
читать сервер
пока ! пинг -c 1 -n -W 2 $ сервер
делать
эхо «Пытаюсь установить связь с $ сервер »
эхо «Нажмите [ENTER] для завершения»
читать -s -N 1 -t 1 ключ
если [ [ $ ключ == $ ‘\ x0a’ ] ] ; # если ввод == клавиша ENTER
потом
выход 0
фи
сделано
printf «% s \ п » » $ сервер бежит»
Вывод:
В этом руководстве показано, как можно разными способами написать сценарий bash, который будет ожидать ввода пользователя для выполнения какой-либо конкретной задачи или завершения сценария. Надеюсь, после отработки приведенных выше примеров вы сможете написать сценарий таким образом, чтобы он мог ждать любого нажатия клавиши и выполнять конкретную задачу на основе клавиши, нажатой пользователем.
Bash wait for keypress
`read` command is used to take user input in a bash script. We can take input in bash script by using various types of options with the read command. Sometimes we need to write the script in such a way that the script will run until a specific key is pressed or the particular script will execute based on the specific key or the program will wait for the specific amount of time until any key is pressed. How you can write bash script to wait for any particular key or any key to some tasks is shown in this tutorial by using different examples.
Example#1:
Create a bash file with the following script. When you will run the script, it will continue until the user presses any key. The script will wait for the user’s input in every 3 seconds and if the user doesn’t press any key then it will print the message, “waiting for the keypress“.
#!/bin/bash
echo «Press any key to continue»
while [ true ] ; do
read -t 3 -n 1
if [ $? = 0 ] ; then
exit ;
else
echo «waiting for the keypress»
fi
done
Example#2:
Create a bash file with the following script. An infinite while loop is used in this example that will terminate when the user will press ‘q’. If the user presses any key without ‘q’ then the value of the counter variable will be increased by 1 and print the value.
#!/bin/bash
echo «Press ‘q’ to exit»
count = 0
while : ; do
read -n 1 k if [ [ $k = q ] ] ; then
printf » \n Quitting from the program \n »
break
else
( ( count = $count + 1 ) )
printf » \n Iterate for $count times \n »
echo «Press ‘q’ to exit»
fi
done
Example#3:
Create a bash file with the following script that will do different types of tasks based on the key pressed by the user. If the user presses ‘1’ then it will add two command line arguments and print. If the user presses ‘2’ then it will subtract two command line arguments and print. The script will run continuously until the user presses ‘3’.
#!/bin/bash
v1 = $1
v2 = $2
while :
do
echo «1. Addition»
echo «2. Subtraction»
echo «3. Quit»
echo -n «Type 1 or 2 or 3 :»
read -n 1 -t 15 a
printf » \n »
case $a in
1 * ) echo » $v1 + $v2 = $(($v1+$v2) )» ;;
* ) echo «Try again.» ;;
esac
done
Run the script with two numeric argument values.
Example#4:
Create a bash file with the following script. The script will terminate when the user will press ESC key. This script will print the keys pressed by the user until ESC key is pressed.
#!/bin/bash
userinput = «»
echo «Press ESC key to quit»
# read a single character
while read -r -n1 key
do
# if input == ESC key
if [ [ $key == $ ‘\e’ ] ] ;
then
break ;
fi
# Add the key to the variable which is pressed by the user.
userinput+= $key
done
printf » \n You have typed : $userinput \n «
Example#5:
Create a bash file with the following code that will wait for ENTER key to terminate the script. The script will take a server name as input and will try to ping the server in every 2 seconds. If ping command gets the response from the server then it will terminate the script by displaying the output otherwise it will wait for the user’s response or ENTER key by printing the message, “Trying to connect with…”.
#!/bin/bash
echo «Enter the server address that you want to ping»
read server
while ! ping -c 1 -n -W 2 $server
do
echo «Trying to connect with $server »
echo «Press [ENTER] to terminate»
read -s -N 1 -t 1 key
if [ [ $key == $ ‘\x0a’ ] ] ; # if input == ENTER key
then
exit 0
fi
done
printf «%s \n » » $server is running»
Conclusion:
This tutorial shows how you can write the bash script in various ways that will wait for the user’s input to do any specific task or terminate the script. Hope, after practicing the above examples, you will be able to write the script in such way that can wait for any keypress and do the particular task based on the key pressed by the user.
About the author
Fahmida Yesmin
I am a trainer of web programming courses. I like to write article or tutorial on various IT topics. I have a YouTube channel where many types of tutorials based on Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel etc. are published: Tutorials4u Help.
Как в Bash реализовать «Нажмите любую кнопку для продолжения»
Иногда нужно приостановить вывод в скрипте, чтобы обратить внимание пользователя на информацию и убедиться, что пользователь увидел её (или имел возможность её увидеть).
В Bash это можно сделать с помощью утилиты read. Эта утилита читает строку из стандартного ввода.
read -p "Нажмите ENTER для продолжения"
Эта команда позволит пользователю продвинуться далее (а скрипт продолжит выполнение) после того, как пользователь нажмёт кнопку ENTER.
Если вам нужно, чтобы для продолжения можно было нажать любую кнопку, то используйте следующую конструкцию:
read -n 1 -s -r -p "Нажмите любую кнопку для продолжения"
В этой команде следующее значение опций:
-n определяет количество символов, после которого будет остановлено чтение. По умолчанию чтение останавливается при вводе разделителя строк (например, кнопкой ENTER). В нашем случае команда read перестаёт считывать вводимые данные после первого символа
-s скрывает пользовательский ввод
-r приводит к тому, что строка будет интерпретирована как «сырая» (без учёта экранирования обратными слэшами). То есть обратным слэшам не будет позволено экранировать символы
-p как и в первом примере, содержит сообщение, показываемое пользователю.
Связанные статьи:
Bash подождите нажатия клавиши
Команда ‘read’ используется для ввода данных пользователем в сценарии bash. Мы можем вводить данные в сценарии bash, используя различные типы параметров с помощью команды чтения. Иногда нам нужно написать сценарий таким образом, чтобы сценарий выполнялся до тех пор, пока не будет нажата определенная клавиша, или конкретный сценарий будет выполняться на основе определенной клавиши, или программа будет ждать определенное количество времени, пока не будет нажата какая-либо клавиша. Как вы можете написать сценарий bash для ожидания какого-либо конкретного ключа или любого ключа к некоторым задачам, показано в этом руководстве с использованием различных примеров.
Пример №1:
Создайте файл bash со следующим скриптом. Когда вы запустите сценарий, он будет продолжаться до тех пор, пока пользователь не нажмет любую клавишу. Сценарий будет ожидать ввода пользователя каждые 3 секунды, и если пользователь не нажмет ни одной клавиши, он распечатает сообщение: «в ожидании нажатия клавиши«.
#!/ bin / bash
echo «Нажмите любую клавишу, чтобы продолжить»
в то время как [истина]; делать
читать -t 3 -n 1
если [$? = 0]; тогда
выход ;
еще
эхо «ожидание нажатия клавиши»
фи
Выполнено
Пример №2:
Создайте файл bash со следующим скриптом. В этом примере используется бесконечный цикл while, который завершится, когда пользователь нажмет ‘q’. Если пользователь нажимает любую клавишу без ‘q’, значение переменной счетчика будет увеличено на 1 и напечатано значение.
#!/ bin / bash
echo «Нажмите q, чтобы выйти»
count = 0
пока : ; делать
читать -n 1 k
Свежие статьи об операционных системах. Множество интересных гайдов и полезных советов. Почувствуйте себя своим в мире современных технологий