UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
$
Правила получения значений переменных приведены в табл. 5.3. Возвращаясь к нашему исходному примеру
t=${1-60}
видим, что
t
$1
$var | Значение var var |
${var} | То же; полезно, если за именем переменной следует буквенно-цифровая строка |
${var-thing} | Значение var thing $var |
${var=thing} | Значение var thing var $var thing |
${var?строка} | Если var $var var: parameter not set |
${var+thing} | thing $var |
Таблица 5.3: Получение значений переменных в языке
Обратите внимание на реализацию команд
true
false
/usr/bin
/bin
Измените команду
watchfor
'joe|mary'
Напишите версию команды
watchwho
comm
awk
Напишите версию команды
watchwho
who
shell
watchwho
checkmail
&
В чем состоит различие между пустой командой языка
shell
#
5.4 Команда
trap
Если во время выполнения команды
watchwho
/tmp
watchwho
При нажатии клавиши DEL всем процессам, запущенным с этого терминала, посылается сигнал прерывания. Аналогично в случае отключения посылается сигнал отбоя. Существуют и другие сигналы. Если в программе не предусмотрены специальные действия по обработке сигналов, то указанные сигналы прекращают ее выполнение. Интерпретатор защищает программы, запущенные с помощью
&
В гл. 7 сигналы рассматриваются подробнее, но для работы с ними на языке
shell
trap
trap последовательность_команд список_номеров_сигналов
Последовательность команд — единый аргумент, поэтому его почти всегда нужно брать в кавычки. Номера сигналов обозначаются небольшими целыми числами, например, 2 соответствует сигналу, возникающему при нажатии клавиши DEL, а 1 — сигналу, возникающему при отключении от сети. Номера сигналов, наиболее часто используемых в
shell
0 | Выход из интерпретатора (по любой причине, включая конец файла) |
1 | Отбой |
2 | Прерывание (клавиша DEL) |
3 | Останов (ctl-; вызывает распечатку содержимого памяти программы) |
9 | Уничтожение (нельзя перехватить или игнорировать) |
15 | Окончание выполнения; сигнал по умолчанию, производимый kill(1) |
Таблица 5.4: Номера сигналов в интерпретаторе
Для удаления временных файлов в команде
watchwho
trap
...
trap 'rm -f $new $old; exit 1' 1 2 15
while:
...
Последовательность команд, образующих первый аргумент команды
trap
trap
exit
shell
trap
trap
-f
rm