Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
63
Добавлен:
20.04.2015
Размер:
2 Mб
Скачать

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. Она выделяет три случая

Соседние файлы в папке Операционные системы