Имя 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
Как видим из приведенных примеров, использование переменных в ряде случаев позволяет упростить форму интерактивных взаимодействий, т.е. уменьшить объем ввода с клавиатуры.