Сценарии командной строки или скрипты (shell scripting) — это самая простая форма программирования, которую можно выполнять в Linux. По сути, это программа, которую выполняет командная оболочка операционной системы. Умение писать скрипты — это очень важный навык для системного администратора, который нужен для автоматизации задач, разработки новых простых утилит и инструментов.
В этой статье мы дадим Вам 10 советов по написанию эффективных bash—скриптов.
Содержание:
- Всегда используйте комментарии в скриптах
- Настраивайте завершение выполнения скрипта при ошибке
- Настраивайте завершение выполнения скрипта при обнаружении необъявленной переменной
- Используйте двойные кавычки для ссылки на переменные
- Используйте функции в скриптах
- Используйте знак = для сравнения строк
- Используйте знак $ вместо знаков «
- Как объявлять статические переменные с опцией readonly
- Используйте верхний регистр для названий переменных среды, нижний — для названий пользовательских переменных
- Выполняйте отладку (debugging) скриптов
- Выводы
Всегда используйте комментарии в скриптах
Комментарии — это важная составляющая любого кода, которая помогает быстрее разобраться в нем. Вообще, их рекомендуется писать не только в скриптах, но и в исходном коде, написанном на различных языках программирования. Использование комментариев помогает Вам или другому пользователю, читающему скрипт, понять, что делают разные его части. Комментарии начинаются со знака решетки — #
.
Настраивайте завершение выполнения скрипта при ошибке
Так бывает, что bash может продолжать выполнять скрипт, несмотря на сбои в выполнении определенной команды. И это, безусловно, может негативно повлиять на работу остальной части скрипта. При этом финальный результат выполнения сценария может кардинально отличатся от того, который был задуман. Чтобы не допускать этого — мы рекомендуем использовать следующую команду для выхода из скрипта в случае ошибке:
Настраивайте завершение выполнения скрипта при обнаружении необъявленной переменной
Также bash может попытаться использовать переменную, не объявленную ранее в коде сценария. Что в конечном счете может привести к ошибке. Чтобы bash завершал выполнение скрипта в такой ситуации — добавьте в код следующую команду:
Используйте двойные кавычки для ссылки на переменные
Кавычки, ограничивающие строки, нужны для предотвращения интерпретации специальных символов, которые могут находиться в строке или в названиях переменных (за исключением некоторых специальных знаков). Использование двойных кавычек при обращении к переменным предотвращает разбиение строк при наличии в них пробелов на слова, а также — другие возможные сбои.
Проделайте пример ниже:
Сохраните и закройте файл, затем — запустите его при помощи следующей команды:
Используйте функции в скриптах
Функция — фрагмент кода, который определяет собственную область видимости, куда входят входные параметры и переменные, объявленные непосредственно в теле самой функции. То есть это мини-программа внутри большой программы. Скрипт, который разбит на функции, становится более модульным. Такой код проще прочитать и понять, чем длинную последовательность предписаний. Кроме того, каждую отдельную функцию можно скопировать и использовать автономно в других скриптах.
Синтаксис написания функций выглядит так:
Также существует возможность написание функций в одну строку. Для этого используйте показанный ниже синтаксис
Используйте знак = для сравнения строк
Для написания кода с использованием условных операторов Вам понадобится использовать символ сравнения.
Во многих популярных языках программирования (таких как Python, C++, JavaScript и других) сравнение на равенство проверяется двойным знаком «равно» — ==
. Однако в сценариях командной строки Линукс для этого используется одинарное равно — =
. Например:
Используйте знак $ вместо знаков «
Существует несколько способов подстановки команд. Вы можете использовать обратные апострофы `command`
для заключения команды в них, либо же использовать конструкцию $(command)
. На сегодняшний рекомендуется использовать именно второй вариант с использованием $
. Что подтверждается рекомендациями shellcheck, инструментом для анализа кода скриптов. Например:
Объявляйте статические переменные с опцией readonly
Статическая переменная — это переменная, которая не меняется. Встроенная команда readonly
используется для пометки переменных, доступных только для чтения (то есть — неизменяемых). Это подразумевает, что изменить ее в будущем уже будет нельзя. Пример использования опции readonly
в скрипте:
Используйте верхний регистр для названий переменных среды, нижний — для названий пользовательских переменных
Все переменные среды bash, такие как HOSTNAME, BASH, GROUPS и другие — следует писать заглавными буквами. Тогда как для именования пользовательских переменных лучше использовать строчные буквы. В коде большого скрипта при использовании множества различных переменных высок риск назвать некоторые из них одинаково, что может привести к неожиданным или даже критическим ошибка. Предлагаем Вам изучить простые примеры корректных названий для переменных:
Выполняйте отладку (debugging) скриптов
Отладка — это устранение ошибок в коде. Отладчик — это средство разработки, которое присоединяется к приложению и проверяет код на ошибки. Во время написания скриптов bash с тысячами строк кода поиск ошибок занимает достаточно длительное время и не гарантирует стопроцентного результата. Для нахождения и исправления ошибок перед выполнением скрипта — выполните отладку.
Например, будем использовать следующий код программы:
Для запуска программы в режиме отладки используйте следующую команду:
Выводы
Умение работать с bash-скриптами — это очень важный навык. Надеемся, что наши 10 советов были Вам полезны. Мы рассчитываем, что наши рекомендации облегчат Вам обучение работе с Linux, Вы сможете приобрести необходимые навыки и станете уверенным пользователем Linux.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.