Структура и аргументы Shell-программы.
Аргументы командных процедур
Интерпретатор команд рассматривает командную строку следующим образом:
Командная строка состоит из «слов», разделенных пробелами. Первое слово интерпретируется как имя программы, остальные слова – это аргументы команды. Интерпретатор осуществляет поиск исполнимого файла (программы), имя которого совпадает с именем команды, вызывает его и передаёт ему все относящиеся к нему параметры.
Примечание: символ % является подсказкой интерпретатора команд.
Простейшая командная процедура (командный файл)
Пусть требуется перейти из домашнего каталога в каталог /bin, распечатать его содержимое и вернуться назад.
Последовательность команд, которая решает эту задачу, выглядит следующим образом:
% cd /bin
% ls –l | more
% cd
Запишем эту последовательность команд в файл с именем batch1.
Теперь можно вызвать интерпретатор командного языка 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.