Bash-переменные: от новичка до профи за 5 минут

Bash-переменные: от новичка до профи за 5 минут

Вы пишете скрипты, которые работают, но напоминают набор разрозненных команд? Пора вывести их на новый уровень! Представьте, что ваш скрипт может запоминать данные, передавать их между операциями и принимать умные решения. Всё это становится реальным с помощью переменных.

Это не просто скучная теория, а самый мощный инструмент для создания по-настоящему гибких и умных автоматизаций. Вы узнаете, как заставить Bash запоминать важную информацию и использовать её в нужный момент.

Мы разберём два типа переменных: системные, которые уже знают о вашем пользователе и системе, и ваши собственные, которые вы создадите с нуля. Вы научитесь правильно их называть, избегая частых и обидных ошибок новичков.

Откроете секрет, почему команда `echo "Цена: $15"` может вывести не то, что вы ожидаете, и как это мгновенно исправить. Поймёте, когда ставить знак доллара, а когда обходиться без него.

Готовы превратить ваши простые скрипты в интеллектуальные программы? Всё необходимое ждёт вас в полной статье. Переходите и сделайте первый шаг к мастерству в Bash-программировании!


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

В этой статье будут рассмотрены переменные в Bash скриптах с точки зрения области видимости, а также некоторые особенности при работе с ними.


Содержание статьи

Переменные среды Bash

Командный интерпретатор Bash поддерживает переменные среды, которые отслеживают различную системную информацию:

  • Имя системы;
  • Имя пользователя, зарегистрированного в системе;
  • Идентификатор пользователя (UID);
  • Исходный (домашний) каталог пользователя по умолчанию и т.п.

Для ознакомления с полным списком локальных переменных среды используется команда set.

set

Результат:

Bash-переменные: от новичка до профи за 5 минут

Значения этих переменных Bash можно использовать в сценариях, для чего необходимо указать имя переменной с предшествующим ей знаком доллара ($).

#!/bin/bash
echo "Информация о пользователе $USER:"
echo UID: $UID
echo Домашний каталог: $HOME

Пример работы скрипта:

Bash-переменные: от новичка до профи за 5 минут

Переменные окружения Bash $USER, $UID и $HOME использовались для отображения запрашиваемой информации о текущем зарегистрированном пользователе.

Обратите внимание: переменные среды в командах echo заменяются их текущими значениями при выполнении программы. Кроме того, переменные, заключённые  в кавычках, и вне их интерпретируются правильно.

Однако в таком методе есть некоторый недостаток: при попытке отобразить какое-то денежное значение в долларовом эквиваленте необходимо добавить перед знаком доллара обратный слэш для его экранирования, чтобы интерпретатор не посчитал следующую за ним цифру именем переменной, принимающей параметр скрипта по указанному номеру.

#!/bin/bash
echo "Неправильная цена вещи: $15"
echo "Правильная цена вещи: $15"

Результат работы скрипта:

Bash-переменные: от новичка до профи за 5 минут

В первой строке, где отображается неправильная цена, интерпретатор воспринял $ как знак начала переменной 1, которая считала первый параметр запущенной программы. Поскольку параметр ничего не содержал, то ничего и не было отображено вместо $1.

На заметку: частым случаем является использование фигурных скобок вокруг имени переменной после знака доллара (например ${variable}). Этот приём позволяет просто определить имя переменной, а на её функциональность это никак не влияет.

Пользовательские переменные Bash

В сценариях командного интерпретатора Bash можно не только использовать переменные среды, но также создавать и включать собственные. Задание переменных позволяет сохранять данные и использовать их во время работы скрипта, что делает его более интерактивным.

Пользовательские переменные Bash Linux могут быть названы любой текстовой строкой длиной до 20 символов, состоящей из букв, цифр и символа подчёркивания. В названии учитывается регистр букв, поэтому переменная Var1 не является переменной var1. Новички в области написания сценариев часто забывают об этой особенности, отчего и допускают трудно диагностируемые ошибки.

Присвоение значения переменной Bash выполняется с помощью знака равенства (=). Слева и справа от знака не должно быть разделяющих символов по типу пробела. Это правило также часто забывается неофитами. Вот пример присваивания значений переменным:

var1=50
var2=-120
var3=test
var4="текстовая строка"

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

На заметку: обращение к пользовательским переменным осуществляется так же, как и к системным, — с помощью знака доллара ($). Он не используется, когда переменной присваивается значение.

Выводы

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

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив