Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы OC UNIX_часть3.doc
Скачиваний:
21
Добавлен:
18.04.2015
Размер:
543.23 Кб
Скачать

3.1. Shell–переменные

В любом языке программирования для хранения значений служат переменные. Сам термин «переменная» предполагает, что в процессе выполнения программы ее значение изменяется.

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

В отличие от остальных языков программирования shell-переменные не связаны с определенным типом данных. Любое значение, которое присваиваетсяshell-переменным, воспринимается как строка символов.

3.1.1. Задание значений переменных и их отмена

Имя shell–переменной должно всегда начинаться с буквы или символа подчеркивания и не может начинаться с цифры. Значение переменной может включать буквы, цифры и подчеркивания. Shell–переменные также могут хранить строки текста.

По традиции стандартные переменные с предопределенными для UNIX значениями пишутся в верхнем регистре. Они резервируются для специальных значений.

Для присваивания значения shell–переменной используется знак равенства = без пробелов с обеих от него сторон.

$ u=UNIX

Если нужно использовать значение переменной, то имени должен предшествовать символ $. Этот символ информируетshellо том, что следующее за ним имя относится к переменной, а не к файлу или литералу. Значения требуемых переменных можно вывести на экран по командеecho, при этом перед именем следует поставить знак$.

Например,

$ echo $u

UNIX

На экране отобразится слово UNIX, поскольку именно это значение было присвоено переменной$u.

Указание имени переменной в операторе присваивания преследует две цели – определение переменной (что называют также установкой ее значения или описанием переменной) и присваивание значения данной переменной.

В некоторых случаях требуется удалить из списка имя переменной. Для этого служит специальная команда unset, или же вы можете просто присвоить переменной нулевое значение, не удаляя ее из списка:

$ HERE=

$ echo $HERE

или

$ unset $u

$ echo $u

Для переменных среды (PATH,PS1, PS2, ...)командаunsetне действует (что является весьма разумным).

В операторе присваивания можно присваивать значения нескольким переменным:

$ a=T b=H c=I d=S

$ echo $a$b$c$d

THIS

Помимо своего очевидного прямого назначения в shell–программах,shell–переменные могут быть весьма полезны в интерактивном режиме. Предположим, что необходимо обращаться к файлам каталога с очень длинным именем из текущего каталога, что довольно неудобно набирать это длинное имя –/usr/td/c/mon/scr/doc.

Простое решение такой задачи состоит в сохранении в некоторой переменной имени каталога для дальнейшей работы с ней:

$ b=/usr/td/c/mon/scr/doc

Можно посмотреть переменную bпо команде

$ echo $b

Теперь, чтобы получить список файлов каталога /usr/td/c/mon/scr/doc, достаточно ввести команду:

$ ls $b

Eсли необходимо выполнить программу «prog», размещенную в каталоге$b, то можно создать новую переменную, которая будет хранить абсолютное полное имя этой программы:

prog=/usr/td/mon/scr/doc/prog

или

prog=$b/prog

Теперь ввод строки

$prog $b/sxema.txt

приведет к выполнению программы

/usr/td/c/mon/scr/doc/prog

с аргументом

/usr/td/c/mon/scr/doc/sxema.txt

После установки переменных ее имя можно использовать в выражениях с префиксом $.

Например:

$ doc=/usr/local/bin/net

$ cd $doc

$ pwd

$ /usr/local/bin/net

Как видим из приведенных примеров, использование переменных в ряде случаев позволяет упростить форму интерактивных взаимодействий, т.е. уменьшить объем ввода с клавиатуры.