Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

Локальные переменные

В сценариях, которые мы написали до сих пор, все переменные (включая константы) были глобальные переменные. Глобальные переменные сохраняют свое существование на протяжении всей программы. Это хорошо для многих вещей, но иногда может усложнить использование функций оболочки. Внутри функций оболочки часто желательно иметь локальные переменные. Локальные переменные доступны только внутри функции оболочки, в которой они определены, и прекращают свое существование после завершения функции оболочки.

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

изображение

Вот пример сценария, демонстрирующий, как определяются и используются локальные переменные:


#! / Bin / Баш


# local-vars: скрипт для демонстрации локальных переменных

#! / Bin / Баш


# local-vars: скрипт для демонстрации локальных переменных


foo = 0

# глобальная переменная foo

foo = 0


функция_1 () {

local foo # переменная foo локальная для funct_1 foo = 1

echo "funct_1: foo = $ foo"

}


функция_2 () {

local foo # переменная foo локальная для funct_2 foo = 2

echo "funct_2: foo = $ foo"

}


echo "global: foo = $ foo" funct_1

функция_1 () {

local foo # переменная foo локальная для funct_1 foo = 1

echo "funct_1: foo = $ foo"

}


функция_2 () {

local foo # переменная foo локальная для funct_2 foo = 2

echo "funct_2: foo = $ foo"

}


echo "global: foo = $ foo" funct_1

Локальные переменные


echo "global: foo = $ foo" funct_2

echo "global: foo = $ foo"

echo "global: foo = $ foo" funct_2

echo "global: foo = $ foo"


Как мы видим, локальные переменные определяются предшествующим имени переменной словом локальным. Это создает переменную, которая является локальной для функции оболочки, в которой она определена. После выхода за пределы функции оболочки переменная больше не существует. Когда мы запускаем этот скрипт, мы видим результаты:



[я @ linuxbox ~] $ местные вары

глобальный: foo = 0 funct_1: foo = 1 глобальный: foo = 0 funct_2: foo = 2 глобальный: foo = 0

[я @ linuxbox ~] $ местные вары

глобальный: foo = 0 funct_1: foo = 1 глобальный: foo = 0 funct_2: foo = 2 глобальный: foo = 0


Мы видим, что присвоение значений локальной переменной Foo внутри обеих функций оболочки не влияет на значение Foo определены вне функций.

Эта функция позволяет писать функции оболочки так, чтобы они оставались независимыми друг от друга и от сценария, в котором они появляются. Это очень ценно, так как помогает предотвратить вмешательство одной части программы в другую. Он также позволяет писать функции оболочки, чтобы их можно было переносить. То есть их можно вырезать и вставлять из сценария в сценарий по мере необходимости.


Лучшие облачные вычисления для ОС в OnWorks: