Поиск по сайту:

Основы автоматизации и сценариев Bash (часть 1)


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

Что такое автоматизация Bash?

Оболочка Bash — это мощная оболочка Linux, позволяющая глубоко автоматизировать повторяющиеся задачи. Мало того, что оболочка Bash Linux является лучшим выбором для DevOps, инженеров по базам данных и инженеров по тестированию, каждый день пользователи могут извлечь выгоду из постепенно приобретаемых, постоянно совершенствующихся навыков Bash. Bash также является языком сценариев и программирования, который растет на вас. Я активно программирую на Bash с 2012 года и использую его гораздо дольше.

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

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

Это мини-серия, состоящая из трех частей, из которых первая, и в ней мы рассмотрим автоматизацию Bash и основы написания скриптов.

Шебанг!

Вам может быть интересно, что это за титул. И вы были бы правы, если бы вы не разговаривали с опытным разработчиком Linux. В лучшем случае они улыбнутся. Это потому, что две первые буквы хорошо написанного сценария Bash всегда будут, ну, Shebang!

Есть два символа, а именно #!, которые можно поместить в начало скрипта, которые указывают оболочке, что интерпретатор может, должен и будет использовать для обработки данного скрипта. Так получилось, что этот символ в целом называется Шебанг в целом.

Таким образом, расширяя наше предыдущее утверждение: первая строка хорошо написанного сценария Bash должна начинаться с #!/bin/bash, чтобы указать оболочке (какая бы оболочка ни использовалась, она может быть например bash или sh или zsh), который нам нужен двоичный /bin/bash (наша оболочка Bash) чтобы выполнить этот код.

Давайте применим это на практике, определив небольшой скрипт test.sh следующим образом:

#!/bin/bash

echo 'Hello CloudSavvyIT Readers!'

Вы можете создать этот скрипт с помощью вашего любимого текстового редактора, который предпочтительно должен быть редактором, использующим только моноширинные шрифты, такие как vi, vim, nano или любой простой текстовый редактор на вашем рабочем столе Linux, и желательно избегать таких вещей, как текстовый процессор, такой как OpenOffice Writer и т. д., поскольку они могут записать дополнительные нежелательные двоичные данные или символы в наш сценарий. Другими словами; нам нужно использовать обычный текст.

Как только этот скрипт определен, мы делаем его исполняемым, выполнив chmod +x test.sh в командной строке. Затем мы можем запустить скрипт, просто вызвав его имя с префиксом ./: ./test.sh

Входные параметры

Как только вы начнете писать сценарии, вы, вероятно, обнаружите, что хотите передать входные параметры сценарию. Один из способов сделать это — использовать простые позиционные параметры, доступные в Bash по умолчанию. Давайте посмотрим на пример скрипта test2.sh, который мы определяем следующим образом:

#!/bin/bash

echo "${1}"

Здесь мы использовали позиционный параметр $ {1}. Эта переменная будет отражать первое слово (по умолчанию через пробел), которое было передано нашему скрипту, если только не используются кавычки. Давайте посмотрим, как это работает:

После того, как наш скрипт снова станет исполняемым с помощью chmod +x test2.sh, мы выполняем то же самое и передаем одно слово hello в качестве первого позиционного параметра ($ { 1). В результате нам возвращается hello.

Это связано с тем, что при запуске сценария переменной $ {1} (или $1, хотя я рекомендую всегда заключать имена переменных в кавычки) было присвоено значение первого позиционного параметра; первое слово или строка в кавычках после имени скрипта.

Затем мы передали hello world, однако это вернуло нам только hello. Причина проста; второе слово (по умолчанию отделенное пробелом) рассматривается как второй позиционный параметр и поэтому инициализируется как $ {2} в скрипте, а не $ {1 .

Мы обошли это поведение, заключая входные данные в кавычки при передаче Hello CloudSavvyIT Readers!. И одинарные, и двойные кавычки сработали бы, хотя их работа отличается, подробнее об этом в следующей части этой серии. В результате наш первый позиционный параметр $ {1} устанавливается равным полному тексту Hello CloudSavvyIT Readers!, и, таким образом, нам возвращается то же самое.

Если вы хотите узнать больше о переменных, наши статьи Bash Functions and Local Variables и Exporting Variables in Bash: Why and How также могут вас заинтересовать.

Подведение итогов

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

В Bash Automation and Scripting Basics (Часть 2) мы рассмотрим заключение переменных в кавычки и многое другое. наслаждайтесь!