Предыдущий урок: bash скрипты для начинающих — урок №1: Первая строка, первый скрипт.
В прошлый раз мы написали простейший скрипт — лишь несколько последовательных команд. Этого достаточно, если в ходе выполнения скрипта не нужно манипулировать данными и варьировать ход исполнения. Но в большинстве случаем одних команд не достаточно, нужны переменные.
Зачем нужны переменные?
Хранение информации: Переменные позволяют сохранять значения, такие как имена файлов, числа или пользовательский ввод, чтобы использовать их позже в скрипте.
Облегчение повторного использования: Вместо повторения одних и тех же значений, можно сохранить их в переменных и использовать много раз, что делает скрипт короче и понятнее.
Обеспечение гибкости: Можно менять значение переменной один раз, и это изменение автоматически отразится во всем скрипте, делая его более универсальным.
Добавление динамичности: Переменные позволяют создавать интерактивные скрипты, которые реагируют на введённые пользователем данные или результаты предыдущих команд.
Управление конфигурацией: Можно использовать переменные для хранения настроек или параметров, чтобы легко их изменять без необходимости переписывать весь скрипт.
Создание переменных
- Шаг 1: Задаем простые переменные
- Шаг 2: Записываем результат исполнения команды в переменную
- Шаг 3: Используем переменные окружения
Создадим новый файл и сделаем его исполняемым:
[root@waky bash_practice]# touch script_2.sh
[root@waky bash_practice]# chmod +x script_2.sh
[root@waky bash_practice]#
Шаг 1: Задаем простые переменные
Добавим в файл script_2.sh следующее содержание:
#!/bin/bash
name="John Doe"
age=33
echo "$name is $age years old"
Мы определили две переменные name и age. Для вызова переменных перед именем ставится знак $. Скрипт выводит строку текста, в которую подставляет значения переменных.
В bash, в отличие от некоторых языков программирования, переменным не нужно задавать тип. По умолчанию все переменные рассматриваются как строка, но допускается их интерпретация как целых чисел.
Запустим скрипт:
[root@waky bash_practice]# ./script_2.sh
John Doe is 33 years old
[root@waky bash_practice]#
Скрипт успешно выполнен, значения переменных на своих местах.
Шаг 2: Записываем результат исполнения команды в переменную
Часто скрипты имеют многослойную структуру, и результат исполнения одной команду используется как условие для исполнения других команд. Сейчас не будем задерживаться на возможностях использования такого функционала, перейдем непосредственно к заданию таких переменных.
Чтобы присвоить результат выполнения команды переменной, надо данную команду заключить в круглые скобки, перед которыми стоит знак $ или заключить команду в ` с двух сторон. Изменим содержание файла script_2.sh:
#!/bin/bash
current_time_var1=$(date)
current_time_var2=`date`
echo "Time var1: $current_time_var1"
echo "Time var2: $current_time_var2"
Выполним скрипт:
[root@waky bash_practice]# ./script_2.sh
Time var1: Sun Dec 21 10:41:21 AM MSK 2025
Time var2: Sun Dec 21 10:41:21 AM MSK 2025
[root@waky bash_practice]#
В обоих случаях переменная содержит результат выполнения команды date. Оба способа равно применимы.
Шаг 3: Используем переменные окружения
Кроме переменных, которые мы сами определяем в скриптах можно использовать переменные окружения. Их список можно увидеть, выполнив команду:
[root@waky bash_practice]# env
SHELL=/bin/bash
HOSTNAME=waky
PWD=/home/bash_practice
...
[root@waky bash_practice]#
Их там довольно много. Они содержат вспомогательную информацию о текущем состоянии окружения. Например, SHELL указывает оболочку, используемую по умолчанию, HOSTNAME — имя хоста, а PWD — текущую директорию.
Вы, наверное, обратили внимание, что переменные окружения названы заглавными буквами. В Linux регистр букв имеет значение, и переменные hostname и HOSTNAME это две разные переменные.
Нет строгого запрета, который не позволит вам назвать свою переменную заглавными буквами, однако, соблюдение правила разделения нейминга переменных по регистру делает скрипт более читаемым и понятным для других пользователей.
Перепишем скрипт, чтобы на практике увидеть, как работаю переменные окружения:
#!/bin/bash
hostname="example"
echo "Env vaiable: $HOSTNAME"
echo "My variable: $hostname"
Результат выполнения скрипта:
[root@waky bash_practice]# ./script_2.sh
Env vaiable: waky
My variable: example
[root@waky bash_practice]#
Как мы и ожидали, на выходе у нас два разных значения из двух разных переменных.
Итоги:
Мы познакомились с переменными в bash скриптах. Рассмотрели основные способы задания переменных. Очень скоро наши скрипты станут больше и серьезнее, а вместе с тем возрастет и значение использования переменных в скриптах.
Следующий урок: bash скрипты для начинающих — урок №3: Арифметические операции.