ЗАДАНИЯ. · Изучите любой сценарий в /etc/init.d

· Изучите любой сценарий в /etc/init.d. Как используется команда case?

· Напишите сценарий, анализирующий с помощью case список пользовате- лей, находящихся в настоящий момент в системе. Если имеется хотя бы один сеанс root, должно выдаваться предупреждающее сообщение.

 

 

Циклы

В случаях, когда надо организовать последовательное выполнение одного и того же набора инструкций, удобно использовать программные циклы. Для программирования в оболочке доступны три вида циклов:

r for — эта команда позволяет создавать циклы типа перебора значений;


 

r while — цикл, выполняющийся до тех пор, пока истинно некоторое ус- ловие;

r until — цикл, выполняющийся до тех пор, пока некоторое условие ложно.

Допустим, что имеется набор значений, которые должны быть последова- тельно присвоены некоторой переменной, требующейся для произведения каких-либо операций. В этом случае удобно использовать команду for (при- мер 10.34).

 

Пример 10.34. Цикл for

 

#!/bin/bash

 

for DIR in /etc /tmp /var do


 

 

done


echo -n "Права доступа к $DIR " ls -ld $DIR | cut -c2-11


 

В данном сценарии переменная DIR последовательно принимает три значе- ния: /etc, /tmp и /var. Это делает команда for, в которой список значений указан после in. Тело цикла начинается после команды do и ограничивается done.

Результат работы сценария представлен в примере 10.35.

 

Пример 10.35. Результаты работы цикла for

 

$ ./for.sh

Права доступа к /etc rwxr-xr-x Права доступа к /tmp rwxrwxrwt Права доступа к /var rwxr-xr-x

 

Если в команде for не указан список значений директивой in, то переменная цикла будет принимать значения, соответствующие аргументам командной строки.

Изменим предыдущий сценарий так, чтобы имена каталогов можно было бы задавать в качестве аргументов в командной строке (примеры 10.36 и 10.37).


 

Пример 10.36. Перебор аргументов командной строки с помощью for

 

#!/bin/bash

[ $# -lt 1 ] && exit 1 for DIR

do

if [ -d $DIR ]; then

echo -n "Права доступа к $DIR " ls -ld $DIR | cut -c2-11

elif [ ! -e $DIR ]; then

echo "$DIR не существует"

fi

done

 

В этом сценарии переменная DIR последовательно принимает значения аргу- ментов.

 

Пример 10.37. Результат перебора аргументов командной строки

 

$ ./for.sh /usr /rsu /root

Права доступа к /usr rwxr-xr-x

/rsu не существует

Права доступа к /root rwx------

 

Для организации итеративных циклов удобно использовать команды while и

until.

Сценарий из примера 10.38 в цикле выводит значения от 1 до 5 раз в секунду

(пример 10.39).

 

Пример 10.38. Итеративный цикл

 

#!/bin/bash

 

i=1

while [ $i -le 5 ]; do

echo –n $i ‘ ‘ ; sleep 1 i=$((i+1))

done echo


 

Пример 10.39. Результаты работы итеративного цикла

 

$ ./while.sh 1 2 3 4 5

 

Цикл while работает до тех пор, пока команда, указанная в качестве ее аргу- мента, возвращает успешный код завершения. Наоборот, until работает, по- ка команда-аргумент заканчивается неудачей.

В качестве примера приведем сценарий, последовательно удаляющий из полного доменного имени узла (FQDN) подстроки до первой точки (при- мер 10.40). Сначала должно быть выведено полное имя узла, затем домен, потом родительский домен, и так далее, пока строка не станет пустой.

 

Пример 10.40. Цикл until

 

#!/bin/bash HN=`hostname`

until [ -z $HN ]; do

echo $HN

HN=`echo -n $HN | tr '.' '\n' | sed '1d' | tr '\n' '.'`

done

 

В сценарии используется переменная HN, которой вначале присваивается зна- чение — доменное имя узла. Затем из него в цикле удаляется подстрока от начала строки до первой встретившейся точки. Для этого в строке — имени узла точки сначала заменяются переводами строк, затем удаляется первая строка, и в заключение переводы строки снова заменяются точками.

Цикл until работает до тех пор, пока содержимое переменной HN не станет пустым.

Результат работы сценария представлен в примере 10.41.

 

Пример 10.41. Результаты работы цикла until

 

$ hostname nechto.zamislovatoe.tmn.ru

$ ./until.sh nechto.zamislovatoe.tmn.ru zamislovatoe.tmn.ru

tmn.ru ru


 








Дата добавления: 2015-06-12; просмотров: 603;


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

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

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

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