Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба 3-4 (Методы) / ОС_лаб_4.doc
Скачиваний:
36
Добавлен:
04.04.2013
Размер:
102.4 Кб
Скачать

7.3. Проверка состояния файла

В случае использования команды testдля проверки состояния файла <выражение> может состоять из следующих примитивов:

-rфайл - истина, если файл существует и доступен для чтения;

-wфайл - истина, если файл существует и доступен для записи;

-xфайл - истина, если файл существует и доступен для выполнения;

-fфайл - истина, если файл существует и является обычным файлом;

-dфайл - истина, если файл существует и является каталогом;

-cфайл - истина, если файл существует и является специальным символьно-ориентированным файлом;

-bфайл - истина, если файл существует и является специальным блок-ориентированным файлом.

8. Управляющие конструкции высокого уровня

8.1. Условный оператор (if)

Формат простого оператора if:

ifусловие

then

команда

команда

. . . . . . .

fi

Если условиеистинно (True), токоманды, которые находятся между служебными словамиthenиfiбудут исполнены, в противном случае они будут пропущены.

Примечание. (Использование команды test в операторе if).

Команда test часто используется в составе условного оператора в командных процедурах.

if test "`date + %d`" -eq 24

then

echo OK

fi

Условие представляет собой выражение, которое может быть заключено в квадратные скобки:

[условное_выражение]

Кроме того, в выражении могут применяться операторы a (AND) и o (OR):

[$i –gt 7 –a $i –le 99]

По сути, мы использовали команду test, однако применение квадратных скобок позволяет не указывать имени команды.

Приведенное выражение будет верно только в том случае, если переменная i > 7 и i ≤ 99.

Формат расширенного оператора if:

ifусловие

then

команда

команда

. . . . . . .

else

команда

команда

. . . . . . .

fi

else

команда

команда

. . . . . . .

fi

Пример_1:Командная процедура (назовём еёwho2), выводящая сведения о работе в данный момент одного из зарегистрированных в системе пользователей.

if

who | grep "$1" > /dev/null

then

echo "$1 is logged on"

else

echo "$1 is not logged on"

fi

Запуск командной процедуры предполагает задание имени пользователя в качестве параметра:

%who2petrov

Если пользователь petrovработает в системе в момент запуска процедурыwho2, то будет выведено сообщение:

petrovisloggedon(Петров зарегистрировался в системе)

в противном случае будет выведено сообщение:

petrovisnotloggedon(Петров не зарегистрировался системе)

В качестве условия в команде ifиспользуется конвейер из двух команд:

  • who- выводит в стандартный вывод сведения о работающих в настоящее время пользователях с указанием времени входа в систему;

  • grep– пропускает на выход только те строки из вывода командыwho, в которых встречается заданный в качестве формального параметра $1 имени пользователя.

8.2. Операторы цикла (for и while)

Все языки программирования включают механизм, который позволяет многократно повторять группу операторов.

8.2.1. Оператор цикла for

Формат оператора цикла for:

forпеременнаяinсписок

do

команда

команда

. . . . . . .

done

Список команд, заключенный между ключевыми словами do . .. doneвыполняется один раз для каждого значения из списка. При этом очередное выбираемое значение из списка присваивается переменной, имя которой указано слева от ключевого словаin.

Список значений может задаваться символьными константами и значением некоторой переменной, содержащей последовательность, разбиваемую разделителями.

Соседние файлы в папке Лаба 3-4 (Методы)