18.3.23. Несколько проверок, реализуемых с помощью elif
18.3.23. Несколько проверок, реализуемых с помощью elif
В следующем несложном примере протестируем введенные в сценарий имена пользователей.
Сначала в сценарии проверяется, действительно ли пользователь ввел имя; если имя не введено, то проверка не выполняется. Если имя введено, с помощью части elif проверяется, совпадает ли имя с root, louise или dave. В случае несовпадения имени ни с одним из перечисленных имен на экран выводится сообщение, что пользователь не является пользователем root, louise или dave.
$ pg ifelif
#!/bin/sh
# ifelif
echo -n "enter your login name :"
read NAME
# имя не введено, рассмотрение прекращается
if [ -z $NAME ] || [ "$NAME"="" ]; then
echo "You did not enter a name"
elif
# является ли именем root
[ "$NAME"="root" ]; then echo "Hello root"
elif
# именем является louise
[ $NAME="louise" ]; then echo "Hello louise"
elif
# именем является dave
[ "$NAME"="dave" ]; then echo "Hello dave"
else
# нет, это какое?то другое имя
echo "You are not root or louise or dave but hi $NAME"
fi
При выполнении приведенного сценария с использованием различных регистрационных имен получим следующее:
$ ifelif
enter your login name : dave Hello dave
$ ifelif
enter your login name : You did not enter a name
$ ifelif2
enter your login name : peter
You are not root or louise or dave but hi peter
18.3.24. Проверка нескольких вариантов размещения файла
Предположим, что к файлу проверки регистрации требуется применить команду cat. Файл в зависимости от того, кто из пользователей выполнял инсталляцию. находится либо в каталоге /usr/opts/audit/logs, либо в каталоге /usr/Iocal/audit/logs. Перед применением к файлу команды cat следует убедиться в том, что его можно просматривать; именно это и будет уточняться при проверке. Если файл нельзя найти или же его нельзя просматривать, на экран выводится сообщение об ошибке. Ниже приводится соответствующий сценарий:
$ pg ifcataudit
#!/bin/sh
#ifcataudit
#размещение файла регистрации
LOCAT_1=/usr/opts/audit/logs/audit.log
LOCAT_2=/usr/local/audit/audit, logs
if [ -r $LOCAT_1]; then
#если файл находится в этом каталоге и может просматриваться,
#применим к нему команду cat echo "Using L0CAT_1"
cat $LOCAT_1
elif
# иначе, файл должен находиться в этом каталоге и можно его просматривать
[ -r §L0CAT_2 ]
then
echo "Using LOCAT_2"
cat $LOCAT_2
else
# нет ни в одном каталоге…
echo `basename $0`: Sorry the audit file ls not readable or cannot be located." >S2
exit 1
fi
Если при выполнении указанного сценария установлено, что файл находится в каком?либо из двух каталогов и может просматриваться, то к нему можно применить команду cat. В противном случае на экран выводится сообщение об ошибке, и сценарий завершается. Этот пример неудачен, поскольку наш воображаемый файл отсутствует.
$ ifcataudit
ifcataudit: Sorry the audit file ls not readable or cannot be located.