Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
63
Добавлен:
20.04.2015
Размер:
2 Mб
Скачать

Лабораторная работа 5 Сценарии в операционной системе Linux

Любая из стандартных оболочек операционных систем семейства UNIX/Linux позволяет создавать командные файлы (еще называемые, сценариями, от англ. script). Следует иметь в виду, что они выполняются так, как будто команды, записанные в нем, последовательно вводятся с клавиатуры. Этот режим называется интерпретация. При котором трудно ожидать эффективной работы. Но программы, написанные на таком языке, учитывая разнообразие поддерживаемых ими средств, могут быть довольно сложными.

Сценарии используют для автоматического выполнения некоторого набора команд. Это удобно, если такие команды выполняется постоянно. Такая ситуация может быть связана с разными системными событиями, например:

– загрузка операционной системы;

– регистрация в системе очередного пользователя;

– запуск программного комплекса, обеспечивающего системные функции (иногда говорят «службы»).

Для понимания системных сценариев надо знать правила их записи. Поэтому первым этапом знакомства со сценариями будет изучение их синтаксиса. В файле сценария могут быть комментарии. Они начинается символом «#» и заканчивается в конце строки. Сценарий представляет собой текстовый файл. В первой его строке обычно записывается имя интерпретатора (например, #!/bin/bash) или пустой оператор :.

Как уже отмечалось, если мы хотим запустить на выполнение сценарий, он должен обладать правом на выполнение (параметр х), которое для владельца файла добавляются командой

chmod u+x <имя файла>

Но запустить текстовый файл с командами не имеющий прав на выполнение можно использую символ «.» (точка)-см. лабораторная работа 2, пункт 2.3 .

Командные оболочки (командные интерпретаторы) семейства UNIX/Linux имеют развитый язык программирования в большой степени ориентированный на автоматизацию задач администрирования ОС. В файле сценария кроме команд (имени исполнимого файла с параметрами) могут содержаться операторы. В последних, естественно, используют переменные.

В рамках этой лабораторной работы будет затронуты не все возможности языковых средств сценариев оболочек UNIX/Linux (не будут затронуты вопросы создание функции и использование массивов).

Начнем описание языка сценария оболочки UNIX с переменных. Можно выделить несколько их типов. Один из них был рассмотрен ранее. Это переменные окружения. Примерами их являются HOME и TERM.

Второй тип переменных создается разработчиком сценария. Их часто называют пользовательские (или переменные, определяемые пользователем). Задать их значения можно непосредственным присваиванием или командой read. Помимо такого типа переменных, а также рассмотренных ранее переменных окружения, язык программирования сценариев имеет собственные, встроенные переменные и предопределенные или специальные преременные.

Приведем два способа присваивания значений пользовательским переменным:

1. Непосредственное присваивание для переменных символьного типа.

переменное=значение

2. Непосредственное присваивание для переменных числовых значений.

let переменное=значение

Такие операторы являются одновременно и объявлением переменных. В данном случае значением может быть и выражения. Если значение переменной надо использовать в выражении, то перед ее именем ставиться символ «$». Далее будет приведено несколько примеров присваивания значений переменным, в которых для вывода значений используем оператор echo.

Перейдем к описанию встроенных переменных. Их имя, как правило, состоит из двух символов. Первым из них является «$». К примеру, в такой переменной $0 содержится имя файла сценария. Если в сценарии с именем scr1 записаны строки, среди которых есть такая

echo “Выполняется“ $0

то результат ее выполнения будет таким

Выполняется scr1

Такие специальные переменные $1, $2,... содержат параметры вызова сценария. Если таких параметров больше 9, то используем <Shift>. Приведем пример. Если сценарий с именем scr1 вызывался такой строкой

scr1 1 two

то такие операторы

echo $1 $2

приведут к следующему результату

1 two

а после такого

shift

echo $1

будет выведено только

two

Другими встроенными переменными сценариев являются такие:

$# - число параметров сценария.

$? - код возврата последнего процесса.

$* и $@ - значения всех параметров переданных сценарию.

Приведем пример использования встроенных переменных оболочки. В нем и далее последние две строки играют такую роль. Первая, после вывода результатов работы скрипта, выводит сообщение press key. Система останавливается и продолжит работу только после нажатия клавиши <Enter>.

Текст сценария scr2

РЕЗУЛЬТАТ и пояснения

#!/bin/bash

clear

echo

echo kol_vo param $#

echo

echo "all param => $*"

echo "all param 2 => $@"

echo "param_ry: one $1 | two $2 | three $3"

echo press key

read q

Если сценарий вызвать следующим образом,

scr2 1 two 3-th

то получим следующие результаты.

3

1 two 3-th

1 two 3-th

1 | two | 3-th

press key

Теперь перейдем к описанию операторов, используемых в сценариях. Выше мы уже упоминали оператор echo, а также то, что для вывода на экран значений переменных используется «$». Для ввода значений переменной а используется оператор read. В приведенном примере показано присвоение символьных и численных значений переменным.

Текст сценария scr3

РЕЗУЛЬТАТЫ и пояснения

#!/bin/bash

clear

read a

b=$a+1

let c=$a+1

let d=$b+1

echo $a $b

echo “ c “ $c “ d “ d

echo press key

read q

Если сценарий вызвать следующим образом,

scr3

то получим следующие результаты.

Вводите 3

3 3+1

с 4 d 5

press key

В сценариях можно использовать управляющие конструкции. Одна из них предполагает использование оператора if. Формат его записи может быть разным, например, таким

Соседние файлы в папке Операционные системы