Переменные интерпретатора shell могут использоваться сценариями в период функционирования интерпретатора shell. После завершения выполнения интерпретатора действие этих переменных прекращается. Например, локальная переменная имя_файла может иметь значение hops.doc. Это значение важно для пользователя только во время выполнения текущего интерпретатора команд; если запускается на выполнение другой процесс или происходит выход из среды интерпретатора команд, текущее значение локальной переменной не сохраняется. Переменные этого типа недоступны для других интерпретаторов shell или процессов, что имеет свои преимущества.
В табл. 14.1 представлены различные способы присваивания значений переменным.
Некоторые пользователи предпочитают заключать переменные интерпретатора команд в фигурные скобки. Это предупреждает ошибочную интерпретацию значений переменных.. Делать это не обязательно, но такой прием удобен в работе.
При присвоении значений локальным переменным используется следующий формат:
$ имя_переменной=значение или ${иня_перемениой=значение}
Обратите внимание, что с обеих сторон знака — имеются пробелы. Если значение содержит пробел, заключите все в двойные кавычки. Для переменных интерпретатора shell можно использовать как строчные, так и прописные буквы.
Таблица 14,1. Различные способы присваивания значений переменным
Имя переменной = значение | Значение переменной присваивается переменной имя_переменной |
Имя переменной + значение | Значение переменной присваивается переменной |
имя переменной, если оно установлено | |
Имя_переменной:?значение | На экран выводится сообщение об ошибке, если не установлена переменная имя_переменной |
Имя переменной? значение | На экран выводится сообщение о системной ошибке, если не установлена переменная имя_переменной |
Имя_переменной:=значение | Значение переменной присваивается переменной имя_переменной, если она не установлена |
Имя переменной: — значение | Как и выше, но значение переменной имя_переменной не присваивается; оно может быть получено подстановкой |
Чтобы отобразить значение отдельной переменной, достаточно применить команду echo и предварить имя переменной знаком $. Рассмотрим несколько примеров.
$ GREAT_PICTURE="die hard"
$ echo ${GREAT_PICTURE}
die hard
$ DOLLAR=99
$ echo $(DOLLAR)
99
$ LAST_FILE=ZLPSO.txt
$ echo ${LAST_FILE}
ZLPSO.txt
Переменные можно также комбинировать. Ниже переменной error_msg присваивается сообщение об ошибке, в котором используется значение переменной среды LOGNAME.
$ ERROR_MSG="Sorry this file does not exist user $LOGNAME"
$ echo ${ERROR_MSG}
Sorry this file does not exist user dave
В приведенном выше примере интерпретатор shell сначала выводит текст, затем рассматривает переменную $LOGNAME и отображает ее значение.
Чтобы удалить значение переменной, достаточно применить команду unset: unset имя_переменной
$ PC=enterprise
$ echo ${РС}
enterprise
$ unset PC
$ echo ${PC)
$
Чтобы просмотреть значения всех переменных интерпретатора shell, достаточно воспользоваться командой set.
$ set
PWD=/root
SHELL=/bin/sh
SHLVL=1
TERM=vt100
UID=7
USER=dave
dollar=99
great_picture=die hard
last_file=ZLPSO.txt
Вывод команды set может быть довольно обширен; при его изучении можно заметить, что интерпретатор shell значительно облегчил работу в среде.
Чтобы объединить значения переменных, достаточно последовательно расположить переменные:
echo ${имя_переменной}${имя_переменной}. . ,
$ FIRST="Bruce "
$ SURNAME=Willis
$ echo ${FIRST}${SURNAME}
Bruce Willis