UNIX — универсальная среда программирования, стр. 65
$Правила получения значений переменных приведены в табл. 5.3. Возвращаясь к нашему исходному примеру
t=${1-60}видим, что
t$1$var | Значение varvar |
${var} | То же; полезно, если за именем переменной следует буквенно-цифровая строка |
${var-thing} | Значение varthing$var |
${var=thing} | Значение varthingvar$varthing |
${var?строка} | Если var$varvar: parameter not set |
${var+thing} | thing$var |
Таблица 5.3: Получение значений переменных в языке
Обратите внимание на реализацию команд
truefalse/usr/bin/binИзмените команду
watchfor'joe|mary'Напишите версию команды
watchwhocommawkНапишите версию команды
watchwhowhoshellwatchwhocheckmail&В чем состоит различие между пустой командой языка
shell#5.4 Команда
trapЕсли во время выполнения команды
watchwho/tmpwatchwhoПри нажатии клавиши DEL всем процессам, запущенным с этого терминала, посылается сигнал прерывания. Аналогично в случае отключения посылается сигнал отбоя. Существуют и другие сигналы. Если в программе не предусмотрены специальные действия по обработке сигналов, то указанные сигналы прекращают ее выполнение. Интерпретатор защищает программы, запущенные с помощью
&В гл. 7 сигналы рассматриваются подробнее, но для работы с ними на языке
shelltraptrap последовательность_команд список_номеров_сигналовПоследовательность команд — единый аргумент, поэтому его почти всегда нужно брать в кавычки. Номера сигналов обозначаются небольшими целыми числами, например, 2 соответствует сигналу, возникающему при нажатии клавиши DEL, а 1 — сигналу, возникающему при отключении от сети. Номера сигналов, наиболее часто используемых в
shell| 0 | Выход из интерпретатора (по любой причине, включая конец файла) |
| 1 | Отбой |
| 2 | Прерывание (клавиша DEL) |
| 3 | Останов (ctl-\; вызывает распечатку содержимого памяти программы) |
| 9 | Уничтожение (нельзя перехватить или игнорировать) |
| 15 | Окончание выполнения; сигнал по умолчанию, производимый kill(1) |
Таблица 5.4: Номера сигналов в интерпретаторе
Для удаления временных файлов в команде
watchwhotrap...trap 'rm -f $new $old; exit 1' 1 2 15while:...Последовательность команд, образующих первый аргумент команды
traptrapexitshelltraptrap-frm