Операционная система UNIX
Шрифт:
Команда test
Команда test имеет следующий синтаксис:
или
Команда вычисляет логическое выражение (табл. 1.10) и возвращает 0, если выражение истинно, и 1 в противном случае.
Таблица 1.10. Выражения, используемые в команде test
Выражения с файлами | |
---|---|
– s file | Размер файла file больше 0 |
– r file | Для файла file разрешен доступ на чтение |
– w file | Для
file разрешен доступ на запись |
– x file | Для файла file разрешено выполнение |
– f file | Файл file существует и является обычным файлом |
– d file | Файл file является каталогом |
– с file | Файл file является специальным файлом символьного устройства |
– b file | Файл file является специальным файлом блочного устройства |
– р file | Файл file является поименованным каналом |
– u file | Файл file имеет установленный флаг SUID |
– g file | Файл file имеет установленный флаг SGID |
– k file | Файл file имеет установленный флаг sticky bit |
Выражения со строками | |
– z string | Строка string имеет нулевую длину |
– n string | Длина строки string больше 0 |
string1 = string2 | Две строки идентичны |
string1 != string2 | Две строки различны |
Сравнение целых чисел | |
i1– eq i2 | i1 равно i2 |
i1– ne i2 | i1 не равно i2 |
i1– lt i2 | i1 строго меньше i2 |
i1– le i2 | i1 меньше или равно i2 |
i1– gt i2 | i1 строго больше i2 |
i1– ge i2 | i1 больше или равно i2 |
Более сложные выражения могут быть образованы с помощью логических операторов:
!выражение | Истинно,
|
выражение1– а выражение2 | Истинно, если оба выражения истинны (оператор AND) |
выражение1– o выражение2 | Истинно, если хотя бы одно из выражений истинно (оператор OR) |
Приведем несколько примеров использования выражений.
Фрагмент скрипта, используемый при регистрации нового пользователя. Скрипт проверяет наличие в домашнем каталоге инициализационного скрипта .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.