среда, 2 февраля 2011 г.

Проверка условий в shell скриптах.


При написании скриптов на shell часто возникает потребность вставлять условия проверки того или иного условия. Для этого удобно пользоваться операторами проверки. Вот их небольшой список.
Проверка прав доступа к файлу:
-d    Каталог;
-f     Обычный файл;
-L    Символическая связь;
-r    Файл для чтения;
-s    Файл имеет ненулевой размер. Файл не пуст;
-w   Файл для записей;
-u    Файл имеет установленный бит suid;
-x    Исполняемый файл;

Логические операторы условий:
-a    Логическое AND, возвращает истину, если обе части оператора принимают
       истинное значение.
-o    Логическое OR, возвращает истину, если какая либо из частей оператора
       может принимать истинное значение.
!     Логическое NOT, возвращает истину, если условие ложно.

Проверка строк:
=    Две строки равны.
!=   Две строки не равны.
-n   Эта строка нулевая.
-z   Эта строка не является нулевой.



Проверка чисел:
-eq   Два числа равны.
-ne   Два числа не равны.
-gt    Первое число больше второго числа.
-lt     Первое число меньше второго числа.
-le    Первое число меньше или равно второму числу.
-ge    Первое число больше или равно второму числу.
Использовать это можно для проверки наличия того или иного условия. Например если нам нужно проверить существование определенного каталога то мы можем сделать это следующим образом.
#!/bin/sh
if [ –d /var/www/dyrektory ]
then
echo “Каталог /var/www/dyrektory существует”
else
echo “Каталог /var/www/dyrektory не существует”
fi
Для проверки результатов выполнения программ используется переменная $?, при успешном завершении обычно возвращается 0, при неуспешном 1. Следовательно мы можем проверять выполнилась или нет программа простой конструкцией
#!/bin/sh
./prog
if [ $? -ne 0 ]
then
echo "Программа завершилась неуспешно"
else
echo "Программа успешно выполнена"
fi