Чтение онлайн

на главную - закладки

Жанры

Шрифт:

Команда test

Команда test имеет следующий синтаксис:

test выражение

или

[ выражение ]

Команда вычисляет логическое выражение (табл. 1.10) и возвращает 0, если выражение истинно, и 1 в противном случае.

Таблица 1.10. Выражения, используемые в команде test

Выражения с файлами
– s file
Размер файла
file
больше 0
– r file
Для файла
file
разрешен доступ на чтение
– w file
Для
файла
file
разрешен доступ на запись
– x file
Для файла
file
разрешено выполнение
– f file
Файл
file
существует и является обычным файлом
– d file
Файл
file
является каталогом
– с file
Файл
file
является специальным файлом символьного устройства
– b file
Файл
file
является специальным файлом блочного устройства
– р file
Файл
file
является поименованным каналом
– u file
Файл
file
имеет установленный флаг SUID
– g file
Файл
file
имеет установленный флаг SGID
– k file
Файл
file
имеет установленный флаг sticky bit
Выражения со строками
– z string
Строка
string
имеет нулевую длину
– n string
Длина строки
string
больше 0
string1 = string2
Две строки идентичны
string1 != string2
Две строки различны
Сравнение целых чисел
i1– eq i2
i1
равно
i2
i1– ne i2
i1
не равно
i2
i1– lt i2
i1
строго меньше
i2
i1– le i2
i1
меньше или равно
i2
i1– gt i2
i1
строго больше
i2
i1– ge i2
i1
больше или равно
i2

Более сложные выражения могут быть образованы с помощью логических операторов:

!выражение
Истинно,
если выражение ложно (оператор NOT)
выражение1– а выражение2
Истинно, если оба выражения истинны (оператор AND)
выражение1– o выражение2
Истинно, если хотя бы одно из выражений истинно (оператор OR)

Приведем несколько примеров использования выражений.

Фрагмент скрипта, используемый при регистрации нового пользователя. Скрипт проверяет наличие в домашнем каталоге инициализационного скрипта .profile и в случае его отсутствия копирует шаблон:

if [ !
– f $НОМЕ/.profile ]

then

 echo "файла .profile не существует - скопируем шаблон"

 cp /usr/lib/mkuser/sh/profile $НОМЕ/.profile

fi

Фрагмент скрипта, проверяющего наличие новой почты в почтовом ящике пользователя

if [ -s $MAIL ]

then

 echo "Пришла почта"

fi

Фрагмент скрипта инициализации системы — запуска "суперсервера" Internet inetd(1M). Если исполняемый файл /etc/inetd существует, он запускается на выполнение.

if [ -х /etc/inetd ]

then

 /etc/inetd

 echo "запущен сервер inetd"

fi

Фрагмент скрипта, анализирующий ввод пользователя, сохраненный в переменной ANSW. Если пользователь ввел 'N' или 'n', скрипт завершает свою работу.

if [ "$ANSW" = "N" -о "$ANSW" = "n" ]

then

 exit

fi

Циклы

Язык программирования Bourne shell имеет несколько операторов цикла. Приведем их синтаксис:

1) 

while условие

do

 command1

 command2

 ...

done

2) 

until условие

do

 command1

 command2

 ...

done

3) 

for var in список

do

 command1

 command2

 ...

done

С помощью оператора while команды

command1
,
command2
и т.д. будут выполняться, пока
условие
не станет ложным. Как и в случае с оператором if,
условие
генерируется кодом возврата команды, например,
test
.

В случае оператора until команды

command1
,
command2
и т.д. будут выполняться, пока
условие
не станет истинным.

Оператор for обеспечивает выполнение цикла столько раз, сколько слов в

списке
. При этом переменная
var
последовательно принимает значения, равные словам из списка. Список может формироваться различными способами, например как вывод некоторой команды (`имя_команды_формирующей_список`) или с помощью шаблонов shell.

В другой форме for, когда список отсутствует, переменная var принимает значения позиционных параметров, переданных скрипту.

Чтобы наглядно представить себе приведенные операторы, обратимся к конкретным примерам.

Например, скрипт монтирования всех файловых систем /etc/mounall для системы Solaris 2.5 включает в себя их проверку, исходя из данных, указанных в файле /etc/vfsck. При этом используется оператор while.

#

cat /etc/vfsck |

while read special fsckdev mountp fstype fsckpass automnt mntopts

# Построчно считывает записи файла vfsck и присваивает переменным spe-

# cial, fsckdev и т.д. значения соответствующих конфигурационных полей.

do

 case $special in

 '# ' * | '' ) # Игнорируем комментарии

continue ;;

Поделиться:
Популярные книги

Черный дембель. Часть 5

Федин Андрей Анатольевич
5. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 5

30 сребреников

Распопов Дмитрий Викторович
1. 30 сребреников
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
5.00
рейтинг книги
30 сребреников

Жребий некроманта 2

Решетов Евгений Валерьевич
2. Жребий некроманта
Фантастика:
боевая фантастика
6.87
рейтинг книги
Жребий некроманта 2

Охота на разведенку

Зайцева Мария
Любовные романы:
современные любовные романы
эро литература
6.76
рейтинг книги
Охота на разведенку

Чужбина

Седой Василий
2. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужбина

Возвышение Меркурия. Книга 4

Кронос Александр
4. Меркурий
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Возвышение Меркурия. Книга 4

Надуй щеки! Том 3

Вишневский Сергей Викторович
3. Чеболь за партой
Фантастика:
попаданцы
дорама
5.00
рейтинг книги
Надуй щеки! Том 3

Идеальный мир для Лекаря 16

Сапфир Олег
16. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 16

По воле короля

Леви Кира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
По воле короля

Он тебя не любит(?)

Тоцка Тала
Любовные романы:
современные любовные романы
7.46
рейтинг книги
Он тебя не любит(?)

Курсант: назад в СССР 9

Дамиров Рафаэль
9. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: назад в СССР 9

Штуцер и тесак

Дроздов Анатолий Федорович
1. Штуцер и тесак
Фантастика:
боевая фантастика
альтернативная история
8.78
рейтинг книги
Штуцер и тесак

Камень Книга седьмая

Минин Станислав
7. Камень
Фантастика:
фэнтези
боевая фантастика
6.22
рейтинг книги
Камень Книга седьмая

Хозяйка дома в «Гиблых Пределах»

Нова Юлия
Любовные романы:
любовно-фантастические романы
5.75
рейтинг книги
Хозяйка дома в «Гиблых Пределах»