Основы языка сценариев Bash: переменные, условия, циклы.
Несомненно, все, кто работает с операционной системой Linux, хотя бы раз сталкивались (или точно слышали) о командной оболочке BASH. Однако BASH не только командная оболочка, но и отличный скриптовый язык программирования.
Цель данной статьи - познакомить пользователей поближе с BASH, рассказать о его синтаксисе, основных методах и особенностях языка, чтобы даже обычный пользователь мог быстро написать простой скрипт для выполнения ежедневных рутинных задач.
Ша-бэнг (#!) в сценарии на Bash используется для определения пути к интерпретатору, который будет использоваться для выполнения сценария. Его также называют строкой шебенга.
Строка шебенга всегда находится в начале сценария. Она состоит из символов "#!", за которыми следует путь к интерпретатору, который обычно "/bin/bash" для сценариев на Bash:
#!/bin/bash
Эта строка информирует операционную систему о том, что сценарий должен быть запущен с использованием указанного интерпретатора. Важно включить строку шебенга в свой сценарий, чтобы гарантировать его правильное выполнение.
Помимо указания пути к интерпретатору Bash, строка шебенга может также использоваться для указания другого интерпретатора, такого как Python, Perl или другой язык сценариев.
Включив строку шебенга в ваш сценарий на Bash, вы можете обеспечить его выполнение с использованием правильного интерпретатора, что делает сценарий более переносимым и независимым от среды пользователя.
Переменные в Bash используются для хранения данных или значений, которые могут использоваться в других частях скрипта. Чтобы объявить переменную, достаточно присвоить ей значение с помощью знака "=":
name="John"age=30
Чтобы получить значение переменной, используется знак "$":
echo "Hello, $name. You are $age years old."
Условные операторы позволяют выполнять определенные действия в зависимости от выполнения условий. Наиболее часто используемый оператор - if и else. Пример использования:
#!/bin/bashсчетчик=0if [ $счетчик -lt 5 ]; then commands to execute if the condition is trueelse commands to execute if the condition is falsefi
Циклы позволяют выполнять определенный блок команд несколько раз. Один из наиболее популярных циклов - цикл while. Пример:
#!/bin/bashcounter=0while [ $counter -lt 5 ]; do echo "Step $counter" counter=$((counter + 1))done
Также в Bash есть циклы for, которые позволяют перебирать элементы в списке.
#!/bin/bashfor i in {1..5}; do echo "Итерация $i"done
В этом примере используется цикл for для перебора значений от 1 до 5. Внутри цикла выводится сообщение "Итерация $i" для каждой итерации, где $i представляет текущее значение переменной цикла. Цикл будет выполняться 5 раз, выводя "Итерация 1" до "Итерация 5".
После того как мы познакомились как использовать переменные и передавать скрипту параметры, время познакомиться с зарезервированными переменными:
$DIRSTACK - содержимое вершины стека каталогов
$EDITOR - текстовый редактор по умолчанию
$EUID - Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя, в то время как...
$UID - ...содержит реальный идентификатор, который устанавливается только при логине.
$FUNCNAME - имя текущей функции в скрипте.
$GROUPS - массив групп к которым принадлежит текущий пользователь
$HOME - домашний каталог пользователя
$HOSTNAME - ваш hostname
$HOSTTYPE - архитектура машины.
$LC_CTYPE - внутренняя переменная, котороя определяет кодировку символов
$OLDPWD - прежний рабочий каталог
$OSTYPE - тип ОС
$PATH - путь поиска программ
$PPID - идентификатор родительского процесса
$SECONDS - время работы скрипта(в сек.)
$# - общее количество параметров переданных скрипту
$* - все аргументы переданыне скрипту(выводятся в строку)
$@ - тоже самое, что и предыдущий, но параметры выводятся в столбик
$! - PID последнего запущенного в фоне процесса
$$ - PID самого скрипта
В этой статье мы рассмотрели основы языка сценариев Bash, включая работу с переменными, условиями и циклами. Познакомившись с этими концепциями, вы сможете эффективно использовать Bash для автоматизации задач и управления процессами в операционной системе Linux.