Операционная система UNIX
Шрифт:
Более сложные выражения могут быть образованы с помощью логических операторов:
!выражение | Истинно, если выражение ложно (оператор NOT) |
выражение1– а выражение2 | Истинно, если оба выражения истинны (оператор AND) |
выражение1– o выражение2 | Истинно,
|
Приведем несколько примеров использования выражений.
Фрагмент скрипта, используемый при регистрации нового пользователя. Скрипт проверяет наличие в домашнем каталоге инициализационного скрипта .profile и в случае его отсутствия копирует шаблон:
– f $НОМЕ/.profile ]
Фрагмент скрипта, проверяющего наличие новой почты в почтовом ящике пользователя
Фрагмент скрипта инициализации системы — запуска "суперсервера" Internet inetd(1M). Если исполняемый файл /etc/inetd существует, он запускается на выполнение.
Фрагмент скрипта, анализирующий ввод пользователя, сохраненный в переменной ANSW. Если пользователь ввел 'N' или 'n', скрипт завершает свою работу.
Циклы
Язык программирования Bourne shell имеет несколько операторов цикла. Приведем их синтаксис:
1)
2)
3)
С помощью оператора while команды
В случае оператора until команды
Оператор for обеспечивает выполнение цикла столько раз, сколько слов в
В другой форме for, когда список отсутствует, переменная var принимает значения позиционных параметров, переданных скрипту.
Чтобы наглядно представить себе приведенные операторы, обратимся к конкретным примерам.
Например, скрипт монтирования всех файловых систем /etc/mounall для системы Solaris 2.5 включает в себя их проверку, исходя из данных, указанных в файле /etc/vfsck. При этом используется оператор while.
Скрипт очистки давно не используемых файлов во временных каталогах (обычно он запускается при загрузке системы) использует оператор for.
– type d -atime +7 -exec rm {} \;
При этом удаляются все файлы в указанных каталогах (/tmp, /usr/tmp и /home/tmp), последний доступ к которым осуществлялся более недели назад.
Селекторы
Оператор case предоставляет удобную форму селектора: