UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
1) m=$l; set `date`; y=$6 ;; #1 arg: use this year
*) m=$1; y=$2 ;; #2 args: month and year
esac
case $m in
jan*|Jan*) m=1 ;;
feb*|Feb*) m=2 ;;
mar*|Mar*) m=3 ;;
apr*|Apr*) m=4 ;;
may*|May*) m=5 ;;
jun*|Jun*) m=6 ;;
jul*|Jul*) m=7 ;;
aug*|Aug*) m=8 ;;
sep*|Sep*) m=9 ;;
oct*|Oct*) m=10 ;;
nov*|Nov*) m=11 ;;
dec*|Dec*) m=12 ;;
[1-9]|10|11|12) ;; # numeric month
*) y=$m; m="" ;; # plain year
esac
/usr/bin/cal $m $y # run the real one
$
В первом операторе case проверяется число аргументов
$#
m
y
cal
Первый оператор
case
set `date`
Хотя это сразу и не очевидно, легко установить действие команды, запустив ее:
$ date
Sat Oct 1 06:05:18 EDT 1983
$ set `date`
$ echo $1
Sat
$ echo $4
06:05:20
$
Итак, мы имеем дело с встроенной командой интерпретатора, возможности которой многообразны. При отсутствии аргументов она выдает, как указывалось в гл. 3, значения переменных окружения. В случае обычных аргументов переопределяются значения
$1
$2
set `date`
$1
$2
case
Команда
set
-v
-х
shell
Теперь осталось только перевести значение месяца, если оно представлено в строковом виде, в число. Это делается с помощью второго оператора
case
|
case
egrep
малый|большой
[jJ]an*
date
* | Задает любую строку, включая пустую |
? | Задает любой одиночный символ |
[ccc] | Задает любой из символов в ccc [a-d0-3] [abcd0123] |
"..." | Задает в точности ... '...' |
c | Задает с |
a|b | Только для выражений выбора; задает а b |
/ | Для имен файлов; соответствует только символу / |
. | Если это первый символ в имени файла, то сопоставляется только с явно заданной точкой в выражении |
Таблица 5.2: Правила сопоставления шаблонов в интерпретаторе
Два последних варианта второго оператора
case
case
Наконец, в последней строке вызывается
/usr/bin/cal
cal
cal
$ date
Sat Oct 1 06:09:55 EDT 1983
$ cal
October 1983