Выражения с файлами | |
---|---|
-s | Размер файла больше 0 |
-r | Для файла разрешен доступ на чтение |
-w | Для файла разрешен доступ на запись |
-x | Для файла разрешено выполнение |
-f | Файл существует и является обычным файлом |
-d | Файл является каталогом |
-с | Файл является специальным файлом символьного устройства |
-b | Файл является специальным файлом блочного устройства |
-р | Файл является поименованным каналом |
-u | Файл имеет установленный флаг SUID |
-g | Файл имеет установленный флаг SGID |
-k | Файл имеет установленный флаг sticky bit |
Выражения со строками | |
-z | Строка имеет нулевую длину |
-n | Длина строки больше 0 |
| Две строки идентичны |
| Две строки различны |
Сравнение целых чисел | |
| равно
|
| не равно
|
| строго меньше
|
| меньше или равно
|
| строго больше
|
| больше или равно
|
Более сложные выражения могут быть образованы с помощью логических операторов:
! | Истинно, если выражение ложно (оператор NOT) |
| Истинно, если оба выражения истинны (оператор AND) |
| Истинно, если хотя бы одно из выражений истинно (оператор OR) |
Приведем несколько примеров использования выражений.
Фрагмент скрипта, используемый при регистрации нового пользователя. Скрипт проверяет наличие в домашнем каталоге инициализационного скрипта .profile и в случае его отсутствия копирует шаблон:
if [ ! -f $НОМЕ/.profile ]
then
echo "файла .profile не существует - скопируем шаблон"
cp /usr/lib/mkuser/sh/profile $НОМЕ/.profile
fi
Фрагмент скрипта, проверяющего наличие новой почты в почтовом ящике пользователя
if [ -s $MAIL ]
then
echo "Пришла почта"
fi
Фрагмент скрипта инициализации системы — запуска "суперсервера" Internet
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
...
done
2) until
do
...
done
3) for
do
...
done
С помощью оператора
,
и т.д. будут выполняться, пока
не станет ложным. Как и в случае с оператором
генерируется кодом возврата команды, например,
.
В случае оператора
,
и т.д. будут выполняться, пока
не станет истинным.
Оператор
. При этом переменная
последовательно принимает значения, равные словам из списка. Список может формироваться различными способами, например как вывод некоторой команды (`
В другой форме
Чтобы наглядно представить себе приведенные операторы, обратимся к конкретным примерам.
Например, скрипт монтирования всех файловых систем /etc/mounall для системы Solaris 2.5 включает в себя их проверку, исходя из данных, указанных в файле /etc/vfsck. При этом используется оператор
#
cat /etc/vfsck |
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии