Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Stsenarii.doc
Скачиваний:
0
Добавлен:
22.12.2018
Размер:
125.95 Кб
Скачать

Область видимости переменных

Каждая переменная имеет свою область видимости. Допустим, в сценарии определена некоторая переменная. Что будет с ней после завершения этого сценария, доступна ли она из других сценариев, вызываемых исходным?

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

Локальная переменная – это такая переменная, которая существует только внутри конкретного экземпляра оболочки. Она не доступна программам, запускаемым на выполнение из этой оболочки. Все рассматривавшиеся ранее переменные были локальными.

Переменная окружения – это переменная, которая доступна любой программе, запущенной из данной оболочки. Некоторые программы нуждаются в определённых переменных окружения. В таком случае в сценарии их можно определить.

Переменная оболочки – это специальная переменная, которая устанавливается оболочкой и необходима ей для корректной работы. Некоторые из них являются переменными окружения, а некоторые – локальными. В переменных с именами 1, 2, 3,… сохраняются параметры командной строки. То есть если некий сценарий script запустить в виде script something, то в его оболочке $1=something.

Переменную можно разместить в окружении, выполнив команду экспорта:

export имя_переменной

В результате выполнения следующего сценария на терминал будут выданы значения всех переменных окружения оболочки и, в том числе, переменной MY_NAME.

#!/bin/sh

MY_NAME=Sergey ; export MY_NAME;

set #это команда для вывода всех переменных окружения и их значений

Ниже в таблице приводится список некоторых стандартных переменных окружения и переменных оболочки с указанием их назначения и и примера их инициализации.

HOME содержит путь к домашнему каталогу пользователя

PATH определяет список каталогов (разделенных двоеточием), в которых оболочка ищет запускаемые на выполнение программы

MANPATH определяет список каталогов, в которых программа man ищет справочную информацию по запрошенной команде

HOSTNAME имя узла (компьютера), на котором выполняется оболочка

USER содержит имя пользователя, работающего с оболочкой в данный момент

PS1 основная строка приглашения (по умолчанию $)

PS2 дополнительная строка приглашения (по умолчанию >); в интерактивном режиме перед вводом команды оболочкой выводится основная строка приглашения. Если нажата клавиша [Enter], но для завершения команды требуется дальнейший ввод, то выводится дополнительная строка приглашения

Команда

echo ${PATH}

выведет на экран значение переменной окружения PATH, например /bin:/usr/bin.

Для добавления еще одного каталога для поиска запускаемых на выполнение программ (например /home/user) необходимо записать команду

PATH=${PATH}:/home/user

Позиционные переменные (или параметры) – это аргументы командных файлов, их именами служат цифры: $0 - имя команды, $1 - первый аргумент, $2 – второй аргумент и т.д. до $9. Значения позиционным переменным могут быть присвоены и командой set.

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

prog –d 23 45 38

Тогда позиционная переменная $0 содержит значение prog, переменная $1 – значение -d, переменная $2 – значение 23, переменная $3 – значение 45, а переменная $4 – значение 38. Значения остальных позиционных переменных будут пустыми строками.

Количество переданных программе позиционных параметров определяется с помощью конструкции $#.

Программе может быть передано программе больше 9 параметров. C помощью команды shift n выполняется смещение позиционных параметров. Значение n определяет, на сколько позиций влево необходимо сдвинуть параметры. Например, если указано shift 3, то $4 становится $1. Значение n может отсутствовать, и тогда предполагается, что n=1. В этом случае, например, $2 становится $1.

Следующие переменные автоматически устанавливаются оболочкой:

$# - количество позиционных параметров

$- - флаги, указанные при запуске оболочки или командой set

$? - десятичное значение, возвращенное предыдущей выполненной командой

$$ - номер текущего процесса

$! - номер процесса последней фоновой команды

$@ - все аргументы командной строки (эквивалентно $1 $2 $3 ...)

$* - все аргументы командной строки (эквивалентно "$1 $2 $3 ...")

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]