Команда 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;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.