Команда case
При создании сценариев часто возникает задача проверить значение, содер- жащееся в переменной, на совпадение с заданными шаблонами. При этом в зависимости от шаблона, с которым произошло совпадение, должны вы- полняться те или иные заданные действия. Для выполнения такой задачи предназначена команда case. Шаблоны сравнения case такие же, как и фай- ловые шаблоны.
Синтаксис команды case в общем показан в примере 10.32.
Пример 10.32. Команда case |
case слово in
шаблон1 )
команды
;;
шаблон2 )
команды
;;
esac
Сравнение слова с шаблонами производится последовательно. Как только найдется совпадение, выполняются соответствующие команды без дальней- ших проверок.
Допустим, что в текущем каталоге располагаются символические ссылки на сценарии запуска служб GNU/Linux. Требуется написать сценарий, который будет запускать службы, передавая сценарию аргумент start, если в качест- ве аргумента будет использована символическая ссылка, начинающаяся с буквы S или s. Если же ссылка будет начинаться с буквы K или k, то служ- бы должны останавливаться и, следовательно, их сценариям должен переда- ваться аргумент stop (пример 10.33).
Пример 10.33. Команда case |
$ cat case.sh
#!/bin/bash
[ $# -ne 1 ] && exit 1; FIRST=`echo $1 | cut -c1` case $FIRST in
esac
[Ss] )
K|k )
* )
echo "Запускается $1"
./$1 start
;;
echo "Останавливается $1"
./$1 stop
;;
echo "Статус $1"
./$1 status
;;
В этом сценарии вначале проверяется количество аргументов. Если оно не равно 1, то осуществляется выход с ошибкой. Далее в переменную FIRST по- мещается первая буква аргумента командной строки.
Команда case проверяет соответствие содержащейся в переменной FIRST буквы шаблону [Ss]. Этот шаблон обозначает множество по аналогии с обычными файловыми шаблонами. То есть этому шаблону удовлетворяют либо S, либо s.
Если буква в FIRST удовлетворяет этому шаблону, служба запускается.
Для остановки службы используется иной шаблон, имеющий в данном слу- чае тот же смысл: либо K, либо k. Вертикальная черта обозначает "ИЛИ". Од- нако ее можно применять даже для целых строк или шаблонов.
Если содержимое переменной FIRST не совпадает и с этим шаблоном, то вы- водится информация о текущем статусе службы.
Дата добавления: 2015-06-12; просмотров: 1109;