Программирование на Shell (Unix)



СРЕДА SHELL (ПЕРЕМЕННЫЕ И ПАРАМЕТРЫ) - часть 6


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

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

4.5. Параметры

В командный файл могут быть переданы параметры. В shell используются позиционные параметры (т.е. существенна очередность их следования). В командном файле соответствующие параметрам переменные (аналогично shell-переменным) начинаются с символа "$", а далее следует одна из цифр от 0 до 9:




Содержание  Назад  Вперед