Читаем Операционная система UNIX полностью

где var — имя переменной, a value — ее значение.

Значение переменной можно получить, используя знак. Например, вывести значение переменной name на экран можно с помощью команды echo следующим образом:

$ echo $name

Так же можно присвоить другой переменной (name1) значение переменной name:

$ name1=$name

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

var=`command`

Так, например, где var — имя переменной, a command — название команды, команда pwd(1) выводит строку со значением текущего каталога:

$ pwd

/usr/home/andrei/test

Можно присвоить переменной cdir значение текущего каталога, которое сохранится в ней:

$ cdir=`pwd`

$ echo $cdir

/usr/home/andrei/test

$ cd /usr/bin

$ pwd

/usr/bin

$ cd $cdir

$ pwd

/usr/home/andrei/test

При использовании переменной, например var, командный интерпретатор подставляет вместо $var ее значение. Более сложные синтаксические конструкции получения значения переменной приведены в табл. 1.7.

Таблица 1.7. Способы получения значения переменной

$varЗначение var; ничего, если переменная var не определена
${var}То же, но отделяет имя переменной var от последующих символов
${var:-string}Значение var, если определено; в противном случае — string. Значение var при этом не изменяется
${var:=string}То же, но если переменная var не определена, ей присваивается значение строки string
${var:?string}Если переменная var не определена, выводится строка string и интерпретатор прекращает работу. Если строка string пуста, то выводится сообщение var: parameter not set
${var:+string}Строка string, если переменная var определена, в противном случае — ничего

Приведем несколько примеров, используя команду echo:

$ var=user1

$ var1=user2

$ echo $var1

user2

$ echo ${var}l

user11

$ echo ${var1:+"do you want to redefine var?"}

do you want to redefine var?

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

ИмяОписаниеВозможное значение
НОМЕКаталог верхнего уровня пользователя/usr/'logname'[13]
PATHПоисковый путь/bin:/etc:/usr/bin:.
MAILИмя почтового ящика/usr/spool/mail/'logname'
TERMИмя терминалаansi
PS1Первичное приглашение shell#
PS2Вторичное приглашение shell>

Начальное окружение вашего сеанса устанавливается программой login(1) исходя из записей в файле паролей, и имеет следующий вид:

Переменная окруженияПоле файла паролей
HOME=домашний_каталог6
LOGNAME=зарегистрированное_имя1
PATH=/usr/bin:-
SHELL=интерпретатор_сеанса7
MAIL=/var/mail/зарегистрированное_имя1
TZ=временная_зонаопределено системой

Переменная НОМЕ в основном используется в команде cd, которая служит для перехода в каталог:

$ pwd

/u/usr

$ cd some/new/directory

$ pwd

/u/usr/some/new/directorу

В результате текущим каталогом (команда pwd(1) выводит на терминал полное имя текущего каталога) становится /u/usr/some/new/directory. Вызов команды cd без параметра эквивалентен следующему вызову:

$ cd $HOME

который вернет вас в домашний каталог.

Переменная PATH служит для поиска командным интерпретатором запускаемых на выполнение программ, если их имя не содержит пути. Например, при запуске программы:

$ run

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

$ ./run

Перейти на страницу:

Похожие книги