русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ЗАДАНИЯ


Дата добавления: 2015-07-09; просмотров: 528; Нарушение авторских прав


· Изучите любой сценарий в /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


 



<== предыдущая лекция | следующая лекция ==>
ЗАДАНИЯ | Функции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.053 сек.