Основы программирования в Linux - Страница 18

Изменить размер шрифта:

Мы представим команду

test
на примере одного простейшего условия: проверки наличия файла. Для нее понадобится следующая команда:
test -f <имя_файла>
, поэтому в сценарии можно написать

if test -f fred.c

then

 ...

fi

To же самое можно записать следующим образом:

if [ -f fred.c ]

then

 ...

fi

Код завершения команды

test
(выполнено ли условие) определяет, будет ли выполняться условный программный код.

Примечание

Имейте в виду, что вы должны вставлять пробелы между квадратной скобкой

[
и проверяемым условием. Это легко усвоить, если запомнить, что вставить символ
[
— это все равно, что написать
test
, а после имени команды вы всегда должны вставлять пробел.

Если вы предпочитаете помещать слово

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

if [ -f fred.c ]; then

 ...

fi

Варианты условий, которые вы можете применять в команде

test
, делятся на три типа: строковые сравнения, числовые сравнения и проверка файловых флагов (file conditionals). Эти типы условий описаны в табл. 2.4.

Таблица 2.4

Варианты условий Результат
Сравнения строк
Строка1 = Строка2
True
(истина), если строки одинаковы
Строка1 != Строка2
True
(истина), если строки разные
-n Строка
True
(истина), если
Строка
не
null
-z Строка
True
(истина), если
Строка null
(пустая строка)
Сравнения чисел
Выражение1 -eq Выражение2
True
(истина), если выражения равны
Выражение1 -ne Выражение2
True
(истина), если выражения не равны
Выражение1 -gt Выражение2
True
(истина), если
Выражение1
больше, чем
Выражение2
Выражение1 -ge Выражение2
True
(истина), если
Выражение1
не меньше
Выражение2
Выражение1 -lt Выражение2
True
(истина), если
Выражение1
меньше, чем
Выражение2
Выражение1 -lе Выражение2
True
(истина), если
Выражение1
не больше
Выражение2
! Выражение
True
(истина), если
Выражение
ложно, и наоборот
Файловый флаг
-d файл
True
(истина), если
файл
— каталог
файл
True
(истина), если
файл
существует. Исторически, опция
-e
не была переносима на другие платформы, поэтому обычно применяется
-f
-f файл
True
(истина), если
файл
— обычный файл
-g файл
True
(истина), если для
файла
установлен бит set-group-id
-r файл
True
(истина), если
файл
доступен для чтения
-s файл
True
(истина), если
файл
ненулевого размера
-u файл
True
(истина), если для
файла
установлен бит set-user-id
-v файл
True
(истина), если
файл
доступен для записи
файл
True
(истина), если
файл
— исполняемый файл
Оригинальный текст книги читать онлайн бесплатно в онлайн-библиотеке Knigger.com