Приведем пример сценария, в котором сравниваются количество файлов в двух каталогах. Этот сценарий надо исполнять в сеансе главного администратора системы - 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. Она выделяет три случая