Онлайн робочі станції OnWorks Linux та Windows

логотип

Безкоштовний онлайн-хостинг для робочих станцій

<Попередній | зміст | Наступна>

Місцеві змінні

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

Наявність локальних змінних дозволяє програмісту використовувати змінні з іменами, які вже можуть існувати в глобальному сценарії або в інших функціях оболонки, не турбуючись про потенційні конфлікти імен.

зображення

Ось приклад сценарію, який демонструє, як визначаються та використовуються локальні змінні:


#! / бін / баш


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

#! / бін / баш


# 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"


Як бачимо, локальні змінні визначаються, перед назві змінної стоїть слово місцевий. Це створює змінну, яка є локальною для функції оболонки, в якій вона визначена. Потрапивши за межі функції оболонки, змінна більше не існує. Коли ми запускаємо цей скрипт, ми бачимо результати:



[me@linuxbox ~]$ локально-вар

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

[me@linuxbox ~]$ локально-вар

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


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

Ця функція дозволяє писати функції оболонки так, щоб вони залишалися незалежними одна від одної та від сценарію, в якому вони з’являються. Це дуже цінно, оскільки допомагає запобігти перешкоджанню однієї частини програми іншій. Це також дозволяє писати функції оболонки, щоб їх можна було переносити. Тобто їх можна вирізати та вставляти від сценарію до сценарію, якщо потрібно.


Найпопулярніші хмарні обчислення ОС на OnWorks: