Структура и аргументы Shell-программы

Аргументы командных процедур

Интерпретатор команд рассматривает командную строку следующим образом:

Структура и аргументы Shell-программы - №1 - открытая онлайн библиотека

Командная строка состоит из «слов», разделенных пробелами. Первое слово интерпретируется как имя программы, остальные слова – это аргументы команды. Интерпретатор осуществляет поиск исполнимого файла (программы), имя которого совпадает с именем команды, вызывает его и передаёт ему все относящиеся к нему параметры.

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

Простейшая командная процедура (командный файл)

Пусть требуется перейти из домашнего каталога в каталог /bin, распечатать его содержимое и вернуться назад.

Последовательность команд, которая решает эту задачу, выглядит следующим образом:

% cd /bin

% ls –l | more

% cd

Запишем эту последовательность команд в файл с именем batch1.

Структура и аргументы Shell-программы - №2 - открытая онлайн библиотека

Теперь можно вызвать интерпретатор командного языка Shell и передать ему в качестве аргумента имя командного файла:

% sh batch1

Управляющие конструкции высокого уровня командного языка.

Управляющие конструкции высокого уровня

Условный оператор (if)

Формат простого оператора if:

if условие

then

команда

команда

. . . . . . .

fi

Если условие истинно (True), команды, которые находятся между служебными словами then и fi будут исполнены, в противном случае они будут пропущены.

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

[условное_выражение]

Кроме того, в выражении могут применяться операторы –a (AND) и –o (OR).

Формат расширенного оператора if:

if условие

then

команда

команда

. . . . . . .

else

команда

команда

. . . . . . .

fi

Операторы цикла (for и while)

Все языки программирования включают механизм, который позволяет многократно повторять группу операторов.

Оператор цикла for

Формат оператора цикла for:

for переменная in список

do

команда

команда

. . . . . . .

done

Список команд, заключенный между ключевыми словами do . . . done выполняется один раз для каждого значения из списка. При этом очередное выбираемое значение из списка присваивается переменной, имя которой указано слева от ключевого слова in.

Список значений может задаваться символьными константами и значением некоторой переменной, содержащей последовательность, разбиваемую разделителями.

Оператор цикла while

Формат оператора цикла while:

while условие

do

команда

команда

. . . . . . .

done

Оператор while повторяет заданную группу команд, если условие выполнения соответствует Истине.Поскольку условие проверяется передвыполнением списка команд, возможна ситуация, когда список не будет выполнен ни разу.

Оператор break используется в циклах для досрочного выхода из цикла.

Оператор continue используется для пропуска команд до конца цикла. При этом осуществляется переход на начало цикла.

Оператор выбора case

Оператор выбора case удобен для организации ветвления программы на основе совпадения шаблонов (образцов).

Можно выполнить подобную операцию с помощью цепочки if-else if, но оператор case короче, удобнее и нагляднее:

Формат оператора case:

case переменная

in

шаблон 1) команда

команда

. . . . . . .

команда ;;

. . . . . . . . . . . . . . . . . . . .

шаблон N. команда

команда

. . . . . . .

команда ;;

esac

Если значение переменной совпало со значением шаблона, то выполняются команды до ';;' , затем те что после esac.