Bash script variables
Переменные в Bash используются для хранения данных, которые могут быть использованы многократно в скрипте.
- Переменные могут хранить строки, числа, массивы и другие типы данных.
- В Bash переменные не требуют объявления типа.
- Например, одна и та же переменная может содержать и строку, и число в разных частях скрипта.
message="Hello, World!"
Для использования значения переменной необходимо обратиться к ней через знак $:
echo $message
Области видимости
Относительно скрипта переменные можно поделить на локальные и глобальные.
Глобальная переменная доступна внутри любой конструкции в скрипте, где она объявлена.
name=”John”
Для того чтобы создать локальную переменную, ее нужно объявить через команду local.
local name=”Jane”
Локальная переменная используется только внутри функций.
- Значение локальной переменной доступно только внутри той функции, где она объявлена и всех её вложенных функций.
- Локальная переменная может затенять одноименные глобальные переменные.
- Если объявить локальную переменную в пространстве скрипта, скрипт завершится с ошибкой и сообщением, что локальные переменные работают только с функциями.
#! /bin/bash
echo "[INFO] Script main.sh is starting..." echo "This is current directory: $(pwd)"
function greet() {
local name="Jane"
echo "Hello, $name $surname!"
}
surname="Doe"
greet
echo $name $surname
- Сначала функция greet выведет сообщение: Hello, Jane Doe!
- surname это глобальная переменная и она доступна во всех конструкциях скрипта.
- Команда echo выводит только Doe.
- Переменная name является локальной и ее значение доступно только внутри функции greet.
Переменные окружения
Переменные окружения Linux доступны в любой части скрипта.
- Это могут быть системные переменные окружения, которые загружаются при старте системы или авторизации пользователя.
- Кроме того это могут быть пользовательские переменные окружения, которые загружаются в процесс оболочки через команду export.
Bash скрипт сам может создавать переменные окружения при помощи команды export.
Доступность этой переменной зависит от того как был запущен скрипт:
- Если скрипт был запущен в текущем процессе оболочки через команду source, переменная окружения останется доступной. ** Если скрипт был запущен в новом дочернем процессе, переменная окружения объявленная в этом дочернем процессе не будет доступна родительскому процессу.