Читаем Внутреннее устройство Linux полностью

Вы увидели, как работает команда [:, код выхода равен 0, если условие проверки истинно, и не равен 0, если проверка завершена неудачно. Вы знаете также, как проверить равенство строк с помощью команды [ str1 = str2 ]. Помните о том, что сценарии оболочки хорошо приспособлены для операций с целыми файлами, поскольку наиболее полезные проверки с помощью команды [ затрагивают свойства файлов. Например, следующая строка проверяет, является ли файл file обычным файлом (а не каталогом или специальным файлом):

[ -f file ]

В сценариях можно увидеть проверку -f, помещенную в цикл, подобный приведенному ниже. Такой цикл проверяет все элементы, находящиеся в текущем рабочем каталоге (вскоре вы узнаете более подробно о циклах):

for filename in *; do

    if [ -f $filename ]; then

        ls -l $filename

        file $filename

    else

       echo $filename is not a regular file.

    fi

done

Можно выполнить инверсию условия, поместив оператор ! перед аргументами команды проверки. Например, условие [ ! –f file ] возвращает значение true, если файл file не является обычным файлом. Кроме того, флаги -a и -o являются логическими операторами «и» и «или» (например, [ -f file1 –a file2 ]).


примечание

Поскольку команда test так широко применяется в сценариях, во многих версиях оболочки Bourne shell (включая версию bash) эта команда является встроенной. Это может ускорить выполнение сценариев, так как оболочке не приходится для каждой проверки запускать отдельную команду.

Существуют десятки операторов проверки, и все они попадают в одну из трех основных категорий: проверка файлов, проверка строк и арифметическая проверка. Интерактивное руководство info содержит всю необходимую документацию, однако страница руководства test(1) позволит быстрее навести справки. В следующих разделах приведены общие сведения об основных видах проверок.


Проверка файлов

Большинство проверок файлов, вроде -f, называется унарными операциями, поскольку им необходим только один аргумент: файл, который следует проверить. Вот две важные проверки файлов:

• -e — возвращает значение true, если файл существует;

• -s — возвращает значение true, если файл непyстой.

Многие операции отслеживают тип файла, это значит, что они способны определить, является ли что-либо обычным файлом, каталогом или специальным устройством, как перечислено в табл. 11.1. Есть также несколько унарных операций, которые проверяют права доступа к файлу, как указано в табл. 11.2 (см. также обзор прав доступа в разделе 2.17).


Таблица 11.1. Операторы проверки типа файла

Оператор

Условие проверки

-f

Обычный файл

-d

Каталог

-h

Символическая ссылка

-b

Блочное устройство

-c

Символьное устройство

-p

Именованный канал

-s

Сокет


примечание

Команда test отслеживает символические ссылки (кроме варианта -h), то есть если ссылка link является символической ссылкой на обычный файл, проверка [ -f link ] возвратит код выхода 0 (true).


Таблица 11.2. Операторы проверки прав доступа к файлу

Оператор

Оператор

-r

Для чтения

-w

Для записи

-x

Исполняемый

-u

Setuid

-g

Setgid

-k

«Закрепленный»

Наконец, три бинарных оператора (это проверки, которым необходимы два файла в качестве аргументов) используются при проверке файлов, но такие проверки не слишком распространены. Посмотрите на такую команду, которая содержит оператор -nt («более поздний, чем»):

[ file1 -nt file2 ]

Результатом будет значение true, если у файла file1 дата изменения более поздняя по сравнению с файлом file2. Оператор -ot («более ранний, чем») выполняет противоположную проверку. Если же вам необходимо установить идентичность жестких ссылок, оператор -ef позволяет сравнить два файла и выдать результат true, если такие файлы совместно используют одинаковые номера дескрипторов inode и устройства.


Проверка строк

Вы уже видели бинарный строковый оператор =, который возвращает значение true, если его операнды равны. Оператор != возвращает значение true, если его операнды не равны. Вот еще два унарных строковых оператора:

• -z — возвращает значение true, если его аргумент пустой (условие [ -z "" ] возвратит значение 0);

• -n — возвращает значение true, если его аргумент непустой (условие [ -n "" ] возвратит значение 1).


Арифметическая проверка

Важно осознавать, что знак равенства (=) проверяет равенство строк, а не чисел. Следовательно, проверка [ 1 = 1 ] вернет результат 0 (true), однако проверка [ 01 = 1 ] возвратит false. При работе с числами используйте оператор -eq вместо знака равенства: проверка [ 01 –eq 1 ] вернет значение true. В табл. 11.3 приведен полный список операторов численного сравнения.


Таблица 11.3. Арифметические операции сравнения

Оператор

Возвращает значение true, если первый аргумент …

-eq

…равен второму

-ne

…не равен второму

-lt

…меньше второго

-gt

…больше второго

-le

…меньше второго или равен ему

-ge

…больше второго или равен ему


Перейти на страницу:

Похожие книги

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT
Полное руководство по Microsoft Windows XP
Полное руководство по Microsoft Windows XP

В книге известного американского автора описывается среда ОС Windows XP и принципы ее функционирования, приведен сравнительный анализ Windows XP с предшествующими версиями операционной системы Windows. Рассматриваются вопросы применения и модификации нового интерфейса с целью получения прямого доступа ко всем функциям Windows XP обсуждаются варианты подключения к компьютерным сетям. Несколько разделов посвящены работе с реестром и конфигурационными файлами, мультимедийным функциям и разнообразным системным службам, а также методам решения проблем с программным обеспечением и оборудованием. Особое внимание уделено обеспечению безопасности операционной системы.Издание адресовано пользователям и сетевым администраторам, желающим активно применять возможности операционной системы Windows XP (в том числе и недокументированные).

Джон Поль Мюллер , Питер Нортон

ОС и Сети / Книги по IT