Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС лабы / ОС - Лабораторная работа 3.doc
Скачиваний:
60
Добавлен:
01.06.2015
Размер:
469.5 Кб
Скачать
      1. Скрипты

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

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

Первая строка скрипта, как правило, представляет собой комментарий специального вида, начинающийся с символов #!, сразу после которых записывается полное имя шелла, который должен быть вызван для выполнения данного скрипта. Например:

#!/bin/ksh

Указание конкретного шелла важно в том случае, если скрипт содержит команды и синтаксические конструкции, которые по-разному обрабатываются разными интерпретаторами. Это указание оформлено как комментарий, поскольку оно не является частью программы скрипта: указывается не «что делать», а «кто должен сделать».

Имеется несколько способов запустить скрипт на выполнение. Можно вызвать для этого любой из имеющихся командных интерпретаторов и передать ему имя командного файла в качестве первого параметра. В этом случае параметры командного файла должны быть указаны как последующие параметры shell, например:

$ bash script1 param1 param2

Чтобы выполнить такой вызов, достаточно иметь право на чтение командного файла, поскольку этот файл играет роль данных, которые будет читать и интерпретировать shell. Указание имени шелла в специальном комментарии в данном случае игнорируется.

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

$ ./script1 param1 param2

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

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

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

В любом из описанных случаев скрипт выполняется в рамках отдельного процесса шелла, отличного от предшествовавшего шелла, запустившего скрипт. Это означает, в частности, что при работе скрипта используется отдельная копия набора переменных, поэтому никакие изменения значений переменных не сохранятся после завершения скрипта. Не сохранятся также изменение текущего каталога и перенаправление ввода-вывода, если они были сделаны в ходе работы скрипта.

Существенно иначе происходит выполнение скрипта с помощью встроенной команды .(точка). Запись «. имя_файла_скрипта» означает, что команды из файла скрипта будут выполняться текущим шеллом, без запуска нового шелла для скрипта. Это означает, что изменения значений переменных, изменение текущего каталога и перенаправление ввода-вывода, сделанные в ходе работы скрипта, сохранятся и после его завершения.