Читаем Linux и UNIX: программирование в shell. Руководство разработчика. полностью

Если пользователь желает выйти из сценария, он выбирает 1, в результате чего после отображения статуса "exit 1" запускается процесс очистки. Если пользователь не желает выходить из сценария, никакие действия не производятся; зададим, что при выполнении конструкции case результаты выбора будут неудачными и произойдет возврат к исходному коду. Конечно, при подтверждении должны захватываться значения всех пустых полей.

Далее приводится функция, которая при получении сигнала предоставляет пользователю возможность выбора.

my_exit () {

# my_exit

echo -e "\nReceived interrupt …"

echo "Do you really wish to exit ???"

echo " 1: Yes" echo " 2: No"

echo -n " Your choice [1..2] >"

read ANS

case $ANS in

1) # удаление временных файлов.. и т. д…

exit 1

;;

# не выполняет ничего

;; esac

}

Соответствующий сценарий выглядит так:

$ pg trap4

#!/bin/sh

#trap4

#перехват сигналов 1 2 3 и 15

trap "my_exit" 1 2 3 15

LOOP=0

# временные файлы

HOLD1=/tmp/HOLD1.$$

HOLD2=/tmp/HOLD2.$$

my_exit() {

# функция my_exit

echo -e "\nRecieved interrupt…"

echo "Do you wish to really exit ???"

echo " Y: Yes"

echo " N: No"

echo -n " Your choice [Y..N] >"

read ANS

case $ANS in

Y|y) exit 1;; # выход из сценария

N|n) ;; # возврат к обычной обработке

esac

}

# цикл while применяется здесь, например, для просмотра полей

echo -n "Enter your name :"

read NAME

echo -n "Enter your age :"

read AGE

Если при выполнении этого сценария происходит нажатие клавиш [Ctrl+C] в середине поля ввода (сразу после начала ввода имени), то пользователю предоставляется выбор: возвратиться к обычной обработке или выйти из сценария.

$ trap4

Enter your name :David Та

Received interrupt…

Do you really wish to exit ???

1: Yes

2: No

Your choice [1. .2] >2

Enter your age :

26.3.3. Блокировка терминала

Ниже приводится сценарий, в котором предлагается другой путь для перехвата сигналов в функционирующем сценарии. Сценарий lockit блокирует терминал пользователя с помощью командной строки. При этом командная строка помещается в непрерывный цикл while. Команда trap захватывает сигналы 2, 3 и 15. Если пользователь пытается прервать выполнение сценария, отображается сообщение о том, что действия пользователя не были успешными.

При первом обращении к сценарию запрашивается пароль. Для отмены блокировки терминала сведения поступают из устройства /dev/tty, следовательно, отсутствует запрос на разблокировку терминала; нужно просто ввести пароль и нажать клавишу ввода.

Если пользователь забыл пароль, нужно зарегистрироваться на другом терминале и устранить сценарий. Проверка длины пароля не производится, но при желании ее можно установить.

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

$ stty sane

Сценарий имеет вид:

$ pg lockit

#!/bin/sh

#lockit

#перехват сигналов 2 3 и 15

trap "nice_try" 2 3 15

#устройство, на котором выполняется сценарий

TTY=`tty`

nice_try () {

# nice_try

echo "Nice try, the terminal stays locked"

}

# сохраните настройки stty, скрытие символов при вводе пароля

SAVEDSTTY=`stty -g`

stty -echo

echo -n "Enter your password to lock $TTY :"

read PASSWORD

clear

while : do

# чтение только из tty !!

read RESPONSE < $TTY

if [ "$RESPONSE"="$PASSWORD" ]; then

# пароль соответствует…разблокировка

echo "unlocking…"

break

fi

#отображение сообщения, если пользователь введет неверный пароль

Перейти на страницу:

Похожие книги

Библия БДСМ. Полное руководство
Библия БДСМ. Полное руководство

Первое исчерпывающее пособие по БДСМ. Уникальный иллюстрированный гид для тех, кому просто любопытно, и для тех, кто уже в Теме. В этой книге известные педагоги и профессионалы ответили на все важные вопросы и раскрыли все интересующие вас темы: основные принципы, ролевые игры, господство, подчинение, фистинг, садизм, мазохизм, связывание, физическое воздействие, тантра необычного секса и многое другое. Если вы хоть раз задумывались о БДСМ, значит, эта книга то, что вам нужно. Она способна обучить, вдохновить и бросить вызов даже опытным игрокам. Не бойтесь экспериментировать, и добро пожаловать в мир сексуальных приключений!

Литагент «5 редакция» , Тристан Таормино

Зарубежная образовательная литература, зарубежная прикладная, научно-популярная литература / Руководства / Дом и досуг / Образовательная литература / Словари и Энциклопедии