Учебники

Unix / Linux — Использование переменных оболочки

В этой главе мы узнаем, как использовать переменные оболочки в 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 —

Live Demo

#!/bin/sh

NAME="Zara Ali"
echo $NAME

Приведенный выше скрипт выдаст следующее значение —

Zara Ali

Переменные только для чтения

Оболочка предоставляет способ помечать переменные как доступные только для чтения, используя команду только для чтения. После того, как переменная помечена только для чтения, ее значение нельзя изменить.

Например, следующий скрипт генерирует ошибку при попытке изменить значение NAME —

Live Demo

#!/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 для сброса переменных, которые помечены только для чтения .

Типы переменных

Когда работает оболочка, присутствуют три основных типа переменных:

Локальные переменные . Локальная переменная — это переменная, которая присутствует в текущем экземпляре оболочки. Он недоступен для программ, запускаемых оболочкой. Они устанавливаются в командной строке.

Переменные среды — переменная среды доступна для любого дочернего процесса оболочки. Некоторым программам нужны переменные окружения для правильной работы. Обычно сценарий оболочки определяет только те переменные среды, которые необходимы программам, которые он запускает.

Переменные оболочки — переменная оболочки — это специальная переменная, которая устанавливается оболочкой и требуется для правильной работы оболочки. Некоторые из этих переменных являются переменными среды, тогда как другие являются локальными переменными.