Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя

Пример 9-3. Еще один пример ограничения времени ожидания ввода от пользователя

#!/bin/bash

# timeout.sh

# Автор: Stephane Chazelas,

# дополнен автором документа.

INTERVAL=5 # предел времени ожидания

timedout_read() {

timeout=$1

varname=$2

old_tty_settings=`stty -g`

stty -icanon min 0 time ${timeout}0

eval read $varname # или просто read $varname

stty "$old_tty_settings"

# См. man stty.

}

echo; echo -n "Как Вас зовут? Отвечайте быстрее! "

timedout_read $INTERVAL your_name

# Такой прием может не работать на некоторых типах терминалов.

# Максимальное время ожидания зависит от терминала.

# (чаще всего это 25.5 секунд).

echo

if [ ! -z "$your_name" ] # Если имя было введено...

then

echo "Вас зовут $your_name."

else

echo "Вы не успели ответить."

fi

echo

# Алгоритм работы этого сценария отличается от "timed-input.sh".

# Каждое нажатие на клавишу вызывает сброс счетчика в начальное состояние.

exit 0

Возможно самый простой способ -- использовать опцию -t команды read.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Пример: установка меток времени файла

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

Пример: установка меток времени файла Программа 3.3 реализует UNIX-команду touch, предназначенную для изменения кода защиты файлов и обновления меток времени до текущих значений системного времени. В упражнении 3.11 от вас требуется расширить возможности функции touch таким


Пример: преобразование файла с использованием расширенного ввода/вывода

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

Пример: преобразование файла с использованием расширенного ввода/вывода Программа 14.3 (atouEX) представляет собой переработанную версию программы 14.1. Эти программы иллюстрируют различие между двумя методами асинхронного ввода/вывода. Программа atouEx аналогична программе


Пример: использование таймера ожидания

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Пример: использование таймера ожидания В программе 14.3 демонстрируется применение таймера ожидания для генерации периодических сигналов.Программа 14.3. TimeBeep: генерация периодических сигналов /* Глава 14. TimeBeep.с. Периодическое звуковое оповещение.  *//* Использование: TimeBeep


Пример: сервер, использующий порты завершения ввода/вывода

Из книги автора

Пример: сервер, использующий порты завершения ввода/вывода Программа 14.4 представляет видоизмененный вариант программы serverNP (программа 11.3), в котором используются порты завершения ввода/вывода. Этот сервер создает небольшой пул серверных потоков и больший пул


6.7 Еще один пример таблицы маршрутизации хоста

Из книги автора

6.7 Еще один пример таблицы маршрутизации хоста Иногда таблицы маршрутизации хостов не столь просты. Рассмотрим, например, два маршрутизатора подсети 128.121.50.0 (см. рис. 6.5). Второй маршрутизатор управляет небольшой локальной сетью с несколькими рабочими станциями. Рис. 6.5.


Пример 9-4. Ограничение времени ожидания команды read

Из книги автора

Пример 9-4. Ограничение времени ожидания команды read #!/bin/bash# t-out.sh TIMELIMIT=4 # 4 секундыread -t $TIMELIMIT variable <&1echoif [ -z "$variable" ]then echo "Время ожидания истекло."else echo "variable = $variable"fi exit 0$UIDuser id numberUID (идентификатор) текущего пользователя, в соответствии с /etc/passwdЭто реальный UID текущего


Пример 24-2. Еще один пример проверки аргументов с помощью "И-списков"

Из книги автора

Пример 24-2. Еще один пример проверки аргументов с помощью "И-списков" #!/bin/bashARGS=1 # Ожидаемое число аргументов.E_BADARGS=65 # Код завершения, если число аргументов меньше ожидаемого.test $# -ne $ARGS && echo "Порядок использования: `basename $0` $ARGS аргумент(а)(ов)" && exit $E_BADARGS# Если


Пример типичного ограничения

Из книги автора

Пример типичного ограничения Фактически ограничения на основе одного поля являются частным слчаем ограничений на основе нескольких полей.Пример создания ограничения первичного ключа с использованием этих двух различных подходов приведен ниже. Давайте создадим


Пример: клиент времени и даты

Из книги автора

Пример: клиент времени и даты В листинге 11.5 показан наш клиент времени и даты из листинга 1.1, переписанный с использованием функции tcp_connect.Листинг 11.5. Клиент времени и даты, переписанный с использованием функции tcp_connect//names/daytimetcpcli.c 1 #include "unp.h" 2 int 3 main(int argc, char **argv) 4 { 5  int


Пример: сервер времени и даты

Из книги автора

Пример: сервер времени и даты В листинге 11.7 показан наш сервер времени и даты из листинга 4.2, переписанный с использованием функции tcp_listen.Листинг 11.7. Сервер времени и даты, переписанный с использованием функции tcp_listen//names/daytimetcpsrv1.c 1 #include "unp.h" 2 #include <time.h> 3 int 4 main(int argc, char


Пример: не зависящий от протокола UDP-сервер времени и даты

Из книги автора

Пример: не зависящий от протокола UDP-сервер времени и даты В листинге 11.13 представлен наш сервер времени и даты, полученный путем модификации листинга 11.8 и предназначенный для использования UDP.Листинг 11.13. Не зависящий от протокола UDP-сервер времени и даты//names/daytimeudpsrv2.c 1


Пример: сервер времени и даты в качестве демона

Из книги автора

Пример: сервер времени и даты в качестве демона В листинге 13.2 представлено изменение нашего сервера времени и даты, не зависящего от протокола. В отличие от сервера, показанного в листинге 11.8, в нем вызывается функция daemon_init, чтобы этот сервер мог выполняться в качестве