Программирование на языке Bash — это программирование на усовершенствованной и модернизированной вариации командной оболочки Bourne shell, которая является одной из самых популярных современных разновидностей командной оболочки UNIX.
Введение
Язык программирования Bash был сформирован Брайаном Фоксом в 1989-ом году как открытая замена для языка Bourne Shell, вышедшего в 1976-ом году. Его наименование — это аббревиатура от Bourne Again SHell. Необходимо отметить, что для программиста, использующего любые другие языки программирования, Bash (и сценарии оболочки в целом) не будут интуитивно понятными. Его синтаксис не очень просто запомнить, переменные имеют необычный вид и так далее.
Bash-скрипты являются сценариями командной строки, которые написаны для оболочки Bash. Следует отметить, что известны и другие подобные оболочки, такие как, zsh, tcsh, ksh, но Bash считается более известной. Также необходимо подчеркнуть, что использование Bash предполагает наличие у пользователя умения работать в командной строке Linux.
Программирование на языке Bash
Сценарием командной строки является совокупность тех же самых команд, которые могут быть введены с клавиатуры, собранная в файлы и объединенная определенной общей целью. Причем итоговые результаты работы команд могут являться или самостоятельной ценностью, или представлять собой входные данные для других команд. Сценариями являются мощные способы, позволяющие автоматизировать часто исполняемые операции.
Командная строка предоставляет возможность выполнения нескольких команд за один раз, путем ввода их через точку с запятой, например, так:
pwd; whoami
Можно считать, что первый bash-скрипт, в котором использованы эти две команды, уже сформирован. Функционирует он следующим образом:
- Вначале команда pwd должна вывести на дисплей данные о текущей рабочей директории.
- Далее команда whoami должна показать информацию о пользователе, под логином которого был выполнен вход в систему.
Применяя такой подход, пользователь может совмещать очень большое количество команд в одной строке, ограничением является только максимальное количество аргументов, которое может быть передано программе. Количественное определение этого ограничения может быть выполнено при помощи следующей команды:
getconf ARG_MAX
Командная строка считается отличным инструментом, однако команды в нее необходимо вводить каждый раз, когда в этом появляется необходимость. Но ведь можно записать необходимую совокупность команд в файл и просто выполнять вызов этого файла для его исполнения. По существу, именно таким файлом и является сценарий командной строки.
Далее рассмотрим устройство bash-скриптов. Создадим пустой файл с применением команды touch. В его первой строчке следует определить, какую конкретно оболочку собирается применять пользователь. Если это bash, то, следовательно, в первой строке файла следует указать:
#!/bin/bash
В других строчках данного файла символ решетка применяется, для того чтобы обозначить комментарии, которые оболочкой не обрабатываются. Тем не менее первая строчка является особым случаем, тут решетка, за которой стоит восклицательный знак (эта последовательность именуется еще шебанг) и направление к bash, определяют для системы тот факт, что сценарий сформирован именно для bash.
Команды оболочки должны отделяться знаком перевода строки, комментарии выделяют знаком решетки. Ниже приведен конкретный пример:
#!/bin/bash
#This is a comment
Pwd
whoami
Здесь так же, как и в командной строке, разрешается запись команд в одной строке, с разделением их точкой с запятой. Тем не менее, если записать команды на различных строчках, то файл будет легче читаться. В любых вариантах оболочка все равно выполнит их обработку.
Если выполнить сохранение файла, присвоив ему, например, имя myscript, то можно считать работу по формированию bash-скрипта практически завершенной. Правда необходимо еще назначить данный файл как исполняемый, потому что в противном случае, при попытке его запуска, появится ошибка Permission denied. Это означает попытку запуска файла сценария с неправильно установленным разрешением. Для того чтобы сделать файл исполняемым, надо добавить следующие команды:
chmod +x ./myscript
Теперь можно его выполнять:
./myscript
Так как разрешения настроены, то все функционирует правильно:
Рисунок 1. Окно программы. Автор24 — интернет-биржа студенческих работ
Для того чтобы вывести текст в консоль Linux, можно использовать команду echo. Если использовать этот факт, то можно отредактировать приведенный выше скрипт, добавив пояснения к данным, которые выводят уже имеющиеся в нем команды:
#!/bin/bash
#our comment is here
echo “The current directory is:"
pwd
echo "The user logged in is:"
whoami
Если запустить обновленный скрипт, то появится следующее сообщение:
Рисунок 2. Окно программы. Автор24 — интернет-биржа студенческих работ
Таким образом можно выводить поясняющие надписи, путем использования команды echo.
При помощи переменных имеется возможность сохранять в файле сценария информацию, такие как, к примеру, результаты работы команд для применения их другими командами. Конечно, можно исполнять отдельные команд без сохранения результатов их работы, но возможности данного подхода являются весьма ограниченными.
Известны следующие типы переменных, которые можно применять в bash-скриптах:
- Переменные среды.
- Переменные пользователя.
Часто в командах оболочки необходимо использовать некоторые системные данные. К примеру, можно осуществить вывод домашней директории текущего пользователя следующим образом:
#!/bin/bash
#display user home
echo "Home for the current user is: $HOME"HOME"
Дополнительно к переменным среды, bash-скрипты предоставляют возможность задания и использования в сценарии собственных переменных пользователя. Такие переменные сохраняют значение до той поры, пока не закончится исполнение сценария. Как и в варианте с системными переменными, к пользовательским переменным допускается обращение с использованием знака доллара.