Программирование на Shell

         

Экспорт переменных


В ОС UNIX существует понятие процесса. Процесс возникает тогда, когда запускается на выполнение какая-либо команда (расчет).

Например, при наборе на клавиатуре "р <Enter>" порождается процесс расчета "р". В свою очередь "р" может породить другие процессы. Допустим, что "р" вызывает расчеты "р1" и "р2", которые последовательно порождают соответствующие процессы.

У каждого процесса есть своя среда - множество доступных ему переменных. Например, до запуска расчета "р" уже существовала среда, в которой уже были определены некоторые переменные (о стандартных переменных речь пойдет несколько позже). Запуск "р" порождает новую среду; уже в ней будут порождены расчеты "р1" и "р2".

Переменные локальны в рамках процесса, в котором они объявлены, т.е. где им присвоены значения (описание переменных отсутствует - они все одного типа). Для того, чтобы они были доступны и другим порождаемым процессам, надо передать их явным образом. Для этого используется встроенная команда "export".

Пример.

Пусть расчет (командный файл) "p", имеющий вид:

# расчет p

echo Расчет p

varX=0 varY=1

echo varX=$varX varY=$varY

export varY

p1 # вызов расчета p1

p2 # вызов расчета p2

echo Снова расчет p: varX=$varX varY=$varY

вызывает командные файлы "p1" и "p2", имеющие вид:

# расчет p1



echo Расчет p1

echo varX=$varX varY=$varY

varX=a varY=b

echo varX=$varX varY=$varY

export varX

# расчет p2

echo Расчет p2

echo varX=$varX varY=$varY

varX=A varY=B

echo varX=$varX varY=$varY

export varY

На экран будут выданы следующая информация:

Расчет p

varX=0 varY=1

Расчет p1

varX= varY=1

varX=a varY=b

Расчет p2

varX= varY=1

varX=A varY=B

Снова расчет p: varX=0 varY=1

Из примера видно, что значения переменных экспортируются только в вызываемые расчеты (и не передаются "вверх" и "вбок"). Экспортировать переменные можно и командой "set" с флагом "-a".

НА ВСЯКИЙ СЛУЧАЙ заметим, что на передачу значений переменных никакого влияния не оказывает "физическое" взаимное расположение (файлов) расчетов в файловой системе.



Содержание раздела