Понимание области видимости переменных
В shell-скриптах переменные по умолчанию являются глобальными. Это означает, что к ним можно обратиться из любого места скрипта. Однако вы можете использовать ключевое слово local для создания переменных, доступных только внутри функции. Это называется локальной областью видимости.
Изменим наш файл 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 пуста при обращении к ней вне функции. Это происходит потому, что локальные переменные доступны только внутри той функции, где они были определены.