Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерные сети / Комп сети 4_shell.ppt
Скачиваний:
50
Добавлен:
22.02.2016
Размер:
231 Кб
Скачать

Программирование на языке shell

Программа shell является одной из наиболее важных утилит OC UNIX.

shell - это не только интерпретатор

команд системы UNIX ( типа command.com в DOS), но еще и язык программирования

на уровне таких команд (то есть можно создавать файлы типа '.bat' как в DOS).

1

При рассмотрении команд в UNIX по сути использовался интерактивный режим взаимодействия с shell, в котором можно:

-ввести команду;

-сделать перадресацию (перенаправление);

-создать конвейер.

Но это только часть возможностей написания программ на языке shell, версий которых очень много:

2

-командный процессор Борна – sh (более старый);

-командный процессор С – csh (более новый, но много различий в этих двух языках);

-командный процессор Корна – ksh (полностью совместим С Борном и включает многие черты С).

3

Любая хранимая в файле команда или последовательность команд системы UNIX

называется shell-программой или командным файлом.

Обычно командным файлом называют

простую последовательность команд, а "shell-программой" - их более сложные

структуры: с ветвлением, с циклом и др.

Существуют три способа инициализации shell для выполнения командных файлов.

4

1. Этот метод основан на переадресации ввода не с терминала, а с файла. Пусть

файл lsdir содержит некоторые команды, тогда можно выполнить:

sh < lsdir

2. В первом случае есть недостаток -

нельзя передавать аргументы.

Поэтому существует возможность в shell читать команды с файла, хранимые на

диске. Это можно сделать просто: sh lsdir

5

Здесь уже можно передавать аргументы, если Вы их предусмотрели.

Например,

sh lsdir/bin/etc

3. Если в файле право доступа на выполнение не подавлено ( установить такой доступ можно командой chmod a+x lsdir ), то тогда выполнить действие по команде из файла lsdir можно просто, набрав

lsdir

Этот способ является наиболее предпочтительным и часто используется.

6

shell переменные

Переменные в системе shell должны начинаться с буквы, состоять из букв, цифр и знака подчеркивания. Имена переменных чувствительны к регистру. Они могут быть любой длины из заглавных, строчных букв, также содержать цифры и специальные символы. Но они не должны начинаться с цифры и не могут содержать спец символы командного интерпретатора (*, $, ?, [, ], <, >)

7

Присваивание значений переменным

Значение переменным можно присвоить по команде присваивания:

ux=u.UNIX

ux=INIX

Здесь первым оператором значение u.UNIX присваивается shell-переменной

"ux", а вторым - ее значение меняется на новое. Желательно команды писать

строчными буквами, а переменные – всегда прописными.

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

8

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

name="Titov Vladidmir Ivanovich"

Команда readonly (только читать) помечает переменную таким образом, что ее значение не может быть изменено:

readonly ux

Теперь, если выполнить для переменной ux команду

ux=uu.UNIX

9

то будет выдано сообщение об ошибке

"ux: is read only".

Поэтому, если в shell-программе значение переменной не должно меняться,

то имеет смысл применить команду readonly.

Если требуется получить список

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

параметров.

10