Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная ОС_3.doc
Скачиваний:
19
Добавлен:
13.03.2016
Размер:
117.25 Кб
Скачать
  1. Оператор выбора case

Синтаксис: Пример:

case<выражение>inecho -n“Введите код города ”

значение 1) < список команд> ;; read z

значение 2) < список команд> ;; case$zin

значение 3) и т.д. 423) echoВладивосток ;;

esac495)echoМосква ;;

815) echoМурманск ;;

*) echo “Неизвестный город ” ;;

esac

В конце каждой строки с альтернативным значением обязательно ставится ";;", так как в каждом случае может быть выполнено несколько команд. Если эти команды будут записаны в одну строку, то символ ";" будет использоваться как разделитель команд.

Обычно последняя строка выбора имеет шаблон *. Эта строка выбирается, если не произошло совпадение значения переменной (здесь $z) ни с одним из ранее записанных шаблонов, ограниченных скобкой ")".

  1. Оператор цикла for в цикле при каждой итерации переменной будет присвоен очередной элемент списка, над которым будут выполнены указанные команды.

Синтаксис: Пример:

for<переменная>[in<список значений>]fornin1 2 3

do <список команд> do echo $n

done done

  1. Оператор цикла WHILE с истинным условием

Выполнение команд повторяется до тех пор, пока условие выполняется, т.е. код завершения последней команды в цикле равен "0", или цикл не будет прерван изнутри специальными командами ("break", "continue" или "exit").

Синтаксис: Пример:

i=1

p=1

while <условие> a=5

do <команда> b=2

done while test $i –le $b

do

p=` expr $p “*” $a `

i=` expr $i + 1 `

done

  1. Оператор цикла until с ложным условием

Этот оператор инвертирует условие повторения по сравнению с операторомwhile, т.е.команды будут выполняться до тех пор, пока условие не выполнится.

Синтаксис: Пример:

until<условие>untildate|grep12:00:

do <команды> do

done sleep 30

done

В данном примере каждые 30 секунд выполняется командная строка условия. Команда "date" выдает текущую дату и время. Команда "grep" получает эту информацию через конвейер и пытается совместить заданный шаблон "12:00:" с временем, выдаваемым командой "date". При несовпадении "grep" выдает код возврата "1", что соответствует значению "ложь", и цикл "выполняет ожидание" в течение 30 секунд, после чего повторяется выполнение условия. Когда условие станет истинным, работа цикла закончится.

Способы выполнения скриптов:

  1. Программа-скрипт может быть выполнена при помощи команды sh:

sh имя_файла_скрипта

  1. Программа-скрипт может стать командой операционной системы, если Вы дадите ей право выполнения:

chmod u+x имя_файла_скрипта

(в данном примере право выполнять скрипт дается только владельцу файла-скрипта).

После выполнения данной команды, скрипт может запускаться на выполнение так же, как и любая команда системы, достаточно ввести в командной строке имя файла-скрипта и нажать Enter. Однако, может появиться сообщение типа:

:command not found

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

./имя_файла_скрипта

  1. Более универсальным способом является определение каталога, в котором находится скрипт в числе тех, среди которых система ищет исполняемые файлы. В таких случаях в домашнем каталоге пользователя обычно создается подкаталог ./binи скрипт помещается в него, а затем имя этого каталога записывается в системную переменнуюPATH. Для этого необходимо сначала отредактировать файл .profile, выполнив команду:

ee${HOME}/.profile.

И внести в него следующие изменения:

PATH=${PATH}:${HOME}/bin; export PATH.

После чего требуется перезагрузить компьютер.

Обратите внимание на имена $PATHи$HOME, указанные в этой команде, это имена стандартных переменных окружения.$PATH- имя переменной, хранящей перечень каталогов, в которых система ищет исполняемые файлы. Каталоги перечисляются в нем через символ ":", таким образом, в этой команде новый каталог добавляется к перечню, сохраняя также и те каталоги, которые были записаны в переменной окружения до этого.$HOME- имя переменной, хранящей имя домашнего каталога пользователя.

Значение переменной PATH, как и других переменных окружения можно посмотреть с помощью командыenv.

После того, как домашний каталог добавлен в PATH, скрипт можно запускать, вводя в командной строке имя файла-скрипта даже без указания каталога, в котором он размещен.

Ход работы:

В ходе выполнения лабораторной работы необходимо создать командный файл, решающий задачу в соответствии с полученным заданием (см. Варианты заданий), а затем выполнить следующие шаги:

  1. Сохранить последовательность команд в файле, проверить ее выполнение с помощью команды sh.

  2. Придать файлу-скрипту право на выполнение, проверить выполнение скрипта запуском из разных каталогов.

  3. После того, как будут выполнены проверки 1, 2, создать в своем домашнем каталоге подкаталог ./binи перенести в него файл-скрипт. Включить созданный подкаталог в переменнуюPATHи проверить запуск скрипта из нескольких разных каталогов без указания пути.

Варианты заданий:

  1. Создать скрипт, осуществляющий вывод на экран меню, состоящего из следующих пунктов:

1. текущий пользователь,

2. смена пароля пользователя,

3. запущенные процессы,

4. выход.

Пользователь выбирает один из пунктов и вводит соответствующий номер. После выполнения выбранной команды (см. Приложение), необходимо снова вывести меню пользователю. Процесс повторять до тех пор, пока не будет выбран пункт меню «выход» (команда exit).

  1. Создать скрипт, который запрашивает у пользователя пароль. Если пароль введен верно, постранично отображается в длинном формате с указанием скрытых файлов содержимое каталога /etc.Если неверно, запрос на ввод пароля повторяется.

  2. Созать скрипт, который собираетвсе текстовые файлы текущего каталога в один архивный файл my.tar(команда TAR), после паузы просматривает содержимое файла my.tar, затем командой GZIP сжимает архивный файл my.tar.

  3. Создать скрипт, осуществляющий переход в родительский каталог, формирующий файл с листингом каталога и возвращающийся в исходный каталог.

  4. Создать скрипт, формирующий текстовый файл со списком файлов в домашнем каталоге. Затем вывести этот список на экран в алфавитном порядке.

  5. Создать скрипт для определения является ли введенный пользователем год високосным или нет. (Необходимо для организации вычислений использовать команду expr, см.приложение)

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

Контрольные вопросы

1. Какое назначение имеют shell - файлы?

2. Как создать shell - файл и сделать его выполняемым?

3. Какие типы переменных используются в shell - файлах?

4. Назовите операторы создания циклов.

5. В каком случае перед именем переменной необходимо указывать знак $?

Отчет о работе должен содержать:

  1. Цель работы

  2. Задание

  3. Ход работы

  4. Листинг командного скрипта

  5. Выводы по работе

  6. Ответы на контрольные вопросы