If условие
then
команды1
else
команды 2
fi
В другой форме он записывается так
If условие
then
команды
fi
Приведем пример сценария, в котором сравниваются количество файлов в двух каталогах. Этот сценарий надо исполнять в сеансе главного администратора системы - root.
Текст сценария scr4 |
РЕЗУЛЬТАТЫ и пояснения |
#!/bin/bash
clear echo echo ls1=`ls -a /root | wc -l` echo echo "kol_vo files /root $ls1" echo ls2=`ls -a /home/asplinux | wc -l`
echo echo "kol_vo files /home/asplinux $ls3" echo
if [ $ls2 -lt $ls1 ]; then echo "/root" fi
if [ $ls2 -eq $ls1 ]; then echo "/root" fi
if [ $ls2 -gt $ls1 ] then echo "/asplinx" fi
echo press key read q |
Если сценарий вызвать следующим образом, scr4 то получим следующие результаты.
Значение переменной – результат ls kol_vo files /root 22 Значение переменной – результат ls
kol_vo files /home/asplinux 31
/asplinux
press key
|
В операторе if для задания условий могут быть использованы следующие комбинации символов:
-eq |
= |
-le |
< |
-gt |
> |
-eq |
|
-le |
<= |
-ge |
>= |
В сценариях можно определить такие операции проверки свойств файлов.
|
-f |
файл существует и является обычным |
|
-d |
является каталогом |
|
-h |
является символической ссылкой |
|
-c |
является символьным устройством |
|
-b |
является блочным устройством |
|
-x |
является выполняемым файлом |
|
-w |
файл с разрешением записи |
|
-r |
файл с разрешением чтения |
|
-s |
пустой файл (НЕ ПУСТОЙ) |
Условия языка программирования оболочек допускают такие сложные условия:
|
-o |
логическое ИЛИ |
|
-a |
логическое И |
|
! |
логическое НЕ |
Для задания сравнения строк используют следующие конструкции:
|
-n |
так проверяют на строковое значение |
|
-z |
проверка на нулевую строку |
|
= |
равенство строк |
|
!= |
неравенство строк |
Приведем другие примеры условного оператора. В следующем сценарии проверяется: «Является ли файл исполнимым?».
-
Текст сценария scr5
РЕЗУЛЬТАТЫ и
пояснения
#!/bin/bash
clear
echo
echo
if [ -x $0 ];
then
echo " execute file $0"
fi
echo press key
read q
Если сценарий вызвать следующим образом,
scr5
то получим следующие результаты.
execute file scr5
press key
Такой сценарий проверяет, в каком из двух каталогов (/sbin или /bin) больше ссылочных файлов (-type l).
Текст сценария scr6 |
РЕЗУЛЬТАТЫ и пояснения |
#!/bin/bash
clear echo echo
ls1=`find /bin -type l | wc -l` echo echo "kol_vo files /bin $ls1" echo ls2=`find /sbin -type l | wc -l` echo echo "kol_vo files /sbin $ls2" echo
if [ $ls2 -gt $ls3 ] then echo "/bin" fi
if [ $ls2 -eq $ls3 ]; then echo "/bin & /sbin" fi
if [ $ls2 -lt $ls3 ]; then echo "/sbin" fi
echo press key read q |
Если сценарий вызвать следующим образом, scr6 то получим следующие результаты.
kol_vo files /bin l5
kol_vo files /sbin l7
/sbin
press key
|
Существует и такая форма оператора if. Она выделяет три случая
