Понимание области видимости переменных
В скриптах оболочки (shell scripts) переменные по умолчанию являются глобальными. Это означает, что к ним можно обращаться из любого места в скрипте. Однако вы можете использовать ключевое слово local
для создания переменных, доступных только внутри функции. Это называется локальной областью видимости (local scope).
Давайте изменим наш файл functions.sh
, чтобы продемонстрировать этот концепт.
Обновите содержимое следующим кодом:
#!/bin/bash
## Глобальная переменная
GLOBAL_VAR="I'm global"
## Функция с локальной переменной
demonstrate_scope() {
local LOCAL_VAR="I'm local"
echo "Inside function: GLOBAL_VAR = $GLOBAL_VAR"
echo "Inside function: LOCAL_VAR = $LOCAL_VAR"
}
## Вызов функции
demonstrate_scope
echo "Outside function: GLOBAL_VAR = $GLOBAL_VAR"
echo "Outside function: LOCAL_VAR = $LOCAL_VAR"
Вот что происходит в этом скрипте:
- Мы определяем глобальную переменную
GLOBAL_VAR
.
- Внутри функции
demonstrate_scope
мы определяем локальную переменную LOCAL_VAR
с использованием ключевого слова local
.
- Мы выводим обе переменные внутри функции.
- После вызова функции мы пытаемся снова вывести обе переменные вне функции.
Сохраните файл и запустите его:
./functions.sh
Вы должны увидеть вывод, похожий на следующий:
Inside function: GLOBAL_VAR = I'm global
Inside function: LOCAL_VAR = I'm local
Outside function: GLOBAL_VAR = I'm global
Outside function: LOCAL_VAR =
Обратите внимание, что LOCAL_VAR
пуста, когда к ней обращаются вне функции. Это потому, что локальные переменные доступны только внутри функции, где они определены.