В этой главе мы узнаем, как использовать переменные оболочки в Unix. Переменная — это строка символов, которой мы присваиваем значение. Назначенное значение может быть числом, текстом, именем файла, устройством или любым другим типом данных.
Переменная — это не более чем указатель на фактические данные. Оболочка позволяет создавать, назначать и удалять переменные.
Имена переменных
Имя переменной может содержать только буквы (от a до z или от A до Z), цифры (от 0 до 9) или символ подчеркивания (_).
По соглашению, переменные оболочки Unix будут иметь свои имена в UPPERCASE.
Следующие примеры являются допустимыми именами переменных —
_ALI TOKEN_A VAR_1 VAR_2
Ниже приведены примеры недопустимых имен переменных.
2_VAR -VARIABLE VAR1-VAR2 VAR_A!
Причина, по которой вы не можете использовать другие символы, такие как ! , * , или — это то, что эти символы имеют особое значение для оболочки.
Определение переменных
Переменные определяются следующим образом:
variable_name=variable_value
Например —
NAME="Zara Ali"
Приведенный выше пример определяет переменную NAME и присваивает ей значение «Zara Ali». Переменные этого типа называются скалярными переменными . Скалярная переменная может содержать только одно значение за раз.
Оболочка позволяет хранить любое значение в переменной. Например —
VAR1="Zara Ali" VAR2=100
Доступ к значениям
Чтобы получить доступ к значению, хранящемуся в переменной, добавьте к его имени знак доллара ( $ ) —
Например, следующий скрипт получит доступ к значению определенной переменной NAME и распечатает его в STDOUT —
#!/bin/sh NAME="Zara Ali" echo $NAME
Приведенный выше скрипт выдаст следующее значение —
Zara Ali
Переменные только для чтения
Оболочка предоставляет способ помечать переменные как доступные только для чтения, используя команду только для чтения. После того, как переменная помечена только для чтения, ее значение нельзя изменить.
Например, следующий скрипт генерирует ошибку при попытке изменить значение NAME —
#!/bin/sh NAME="Zara Ali" readonly NAME NAME="Qadiri"
Приведенный выше скрипт сгенерирует следующий результат —
/bin/sh: NAME: This variable is read only.
Сброс переменных
Сброс или удаление переменной заставляет оболочку удалить переменную из списка переменных, которые она отслеживает. После того, как вы удалили переменную, вы не сможете получить доступ к сохраненному значению в переменной.
Ниже приведен синтаксис для сброса определенной переменной с помощью команды unset —
unset variable_name
Приведенная выше команда отменяет значение определенной переменной. Вот простой пример, который демонстрирует, как работает команда —
#!/bin/sh NAME="Zara Ali" unset NAME echo $NAME
Приведенный выше пример ничего не печатает. Вы не можете использовать команду unset для сброса переменных, которые помечены только для чтения .
Типы переменных
Когда работает оболочка, присутствуют три основных типа переменных:
Локальные переменные . Локальная переменная — это переменная, которая присутствует в текущем экземпляре оболочки. Он недоступен для программ, запускаемых оболочкой. Они устанавливаются в командной строке.
Переменные среды — переменная среды доступна для любого дочернего процесса оболочки. Некоторым программам нужны переменные окружения для правильной работы. Обычно сценарий оболочки определяет только те переменные среды, которые необходимы программам, которые он запускает.
Переменные оболочки — переменная оболочки — это специальная переменная, которая устанавливается оболочкой и требуется для правильной работы оболочки. Некоторые из этих переменных являются переменными среды, тогда как другие являются локальными переменными.