Структура bash-скрипта

Каждый Bash-скрипт начинается с шебанга (#!/bin/bash), который указывает, что скрипт должен выполняться в оболочке Bash. Комментарии в Bash начинаются с #, и они помогают документировать код, но в первой строчке # используется именно для определения оболочки.

Пример структуры:

#!/bin/bash
# Это пример скрипта
echo "Пример структуры"

Чтобы создать файл скрипта, нужно дать ему имя и приписать расширение файла .sh. Для этого можно использовать команду touch

touch mybash.sh

Теперь редактируем содержимое нашего скрипта, для этого вводим эту команду и вставляем содержимое

nano mybash.sh

После этого сохраняем файл CTRL+X, потом Y и Enter.

Если мы попробуем запустить наш скрипт, то получим следующую ошибку

Перед запуском нам нужно сделать файл исполняемым

Теперь запускаем наш скрипт и видим такой вывод

Как видите, наш скрипт отработал, как положено — вывел текст, который мы и прописывали в скрипте.

Команда вывода сообщений

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

После запуска скрипта мы узнали, что на сервере стоит Ubuntu 20.04 и работаем мы с под root

Переменные

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

1. Переменные среды Переменные среды — это предопределенные системные переменные, содержащие информацию о системе. Например:

  • $USER — имя пользователя

  • $HOME — домашняя директория

  • $PATH — список директорий, где Linux ищет исполняемые файлы

2. Пользовательские переменные Пользовательские переменные создаются в самом скрипте и могут хранить нужные значения:

Если в тексте вам нужно написать значок доллара, например, "Я заработал $50 на дропе Scroll!", то система подумает, что $50 — это переменная и будет ошибка. В данном случае нам нужно использовать обратную косую черту перед знаком доллара, то есть "Я заработал \$50 на дропе Scroll!"

Подстановка команд

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

Пример извлечения информации из команд и назначения переменным:

Математические операции

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

Вывод этого скрипта будет 8.

Управляющая конструкция if-then

Конструкция if-then позволяет выполнять команды, если условие истинно:

В данному случае, если условие будет ложным, то текст не выведется.

Управляющая конструкция if-then-else

С помощью if-then-else можно добавить выполнение команды при ложном условии:

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

Сравнение чисел и строк

В Bash для сравнения чисел и строк используются разные операторы.

Для работы с числами в Bash можно использовать следующие операторы:

  • a -eq b: истина, если a равно b.

  • a -ne b: истина, если a не равно b.

  • a -gt b: истина, если a больше b.

  • a -ge b: истина, если a больше или равно b.

  • a -lt b: истина, если a меньше b.

  • a -le b: истина, если a меньше или равно b.

В Bash для работы со строками используются следующие операторы:

  • str1 = str2: возвращает истину, если строки str1 и str2 идентичны.

  • str1 != str2: истина, если строки не совпадают.

  • str1 < str2: истина, если str1 меньше str2 (лексикографически).

  • str1 > str2: истина, если str1 больше str2.

  • -n str1: истина, если строка str1 не пустая.

  • -z str1: истина, если строка str1 пустая.

Эти простые условия позволяют проверять значения и работать с ними в скриптах.

Проверки файлов

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

  • -d file: проверяет, существует ли файл и является ли он директорией.

  • -e file: проверяет, существует ли файл (любой тип).

  • -f file: проверяет, существует ли файл и является ли он обычным файлом.

  • -r file: проверяет, доступен ли файл для чтения.

  • -s file: проверяет, не пустой ли файл.

  • -w file: проверяет, доступен ли файл для записи.

  • -x file: проверяет, исполняемый ли файл.

  • file1 -nt file2: проверяет, новее ли file1, чем file2.

  • file1 -ot file2: проверяет, старше ли file1, чем file2.

  • -O file: проверяет, является ли текущий пользователь владельцем файла.

  • -G file: проверяет, соответствует ли файл группе текущего пользователя.

Пример Bash-скрипта с несколькими проверками для файла example.txt:

Этот скрипт использует несколько проверок, чтобы узнать, существует ли example.txt, доступен ли он для чтения, является ли он исполняемым и новее ли он другого файла.

Last updated