Любая из стандартных оболочек операционных систем семейства 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 вызывался такой строкой