Практическое написание сценариев командной оболочки Bash: различия между версиями
Нет описания правки |
|||
Строка 100: | Строка 100: | ||
}} |
}} |
||
{{Готовность | |
{{Готовность |100%|12 октября 2021}} |
||
{{BookCat}} |
{{BookCat}} |
||
{{Темы |Языки программирования}} |
{{Темы |Языки программирования}} |
Версия от 13:58, 12 октября 2021
Приемы программирования сценариев в Bash
В этом учебнике мы рассмотрим язык сценариев командной оболочки Bash. Отличительной особенностью этого учебника заключается в том, что мы не будем сухо пересказывать документацию к командной оболочке, а попытаемся рассказать о языке с практической стороны.
В этом учебнике предполагается, что вы уже знакомы с основами синтаксиса языка Bash. Если это не так, то мы рекомендуем прочитать учебник Cooper, Mendel Искусство программирования на языке сценариев командной оболочки = Advanced Bash-Scripting Guide., который подробно рассказывает об основах синтаксиса языка.
Введение
Bash — это одна из наиболее популярных командных оболочек, являющихся клоном командной оболочки Bourne Shell. Во многих дистрибутивах Linux эта оболочка предустановлена по умолчанию и используется для интерактивного взаимодействия пользователя с системой, а также для автоматизации рутинных задач как самой системы, так и ее пользователей.
Рутинные повторяющиеся задачи пользователь оформляет в форме файлов-сценариев, которые могут быть переданы командной оболочке на исполнение. Сценарий — это программа, интерпретируемая Bash. Область применения Bash напрямую связана с системными задачами, но в принципе вы можете писать на нем не очень сложные приложения, связанные с формированием, например, отчетов; анализа данных; прототипов программ для демонстраций и др.
Язык сценариев Bash имеет следующие преимущества перед другими скриптовыми языками:
- Самое очевидное — вам не нужен компилятор. Вы можете написать программу, запустить ее и увидеть результат сразу. Изменяя содержимое файла сценария, изменения применяются сразу же.
- Как правило, Bash идет в поставке с дистрибутивом, т.е. вы можете начать пользоваться им сразу после установки операционной системы.
- Язык сценариев Bash очень простой в освоении. Основные сложности языка связаны в основном с некоторыми особенностями интерпретации, которые требуют некоторой концентрации внимания у программиста.
Самым большим сдерживающим фактором применения синтаксиса Bash для написания сценариев является плохая портируемость. В целом, сценарии, которые используют только оригинальный синтаксис Bourne Shell, хорошо портируются между командными оболочками, которые ответвились от него.
Например, можно написать сценарий, который будет одинаково хорошо исполняться, вообще говоря, в разных командных оболочках Bash и Zsh. Но при этом приходится жертвовать использованием очень полезных расширений Bash, существенно упрощающих написание кода скрипта.
Даже в пределах одного мажорного номера, разные версии Bash могут интерпретировать некоторые конструкции по-разному, поэтому следует тщательно тестировать большие сценарии. Например сравните как выполняется следующий код в разных версиях Bash:
#!/bin/bash
echo "BASH VERSION = $BASH_VERSION"
echo "--------------------------------"
while read -r key val; do
echo "$key = $val"
done <<< $(
for key in alpha beta gamma; do
for value in {1..3}; do
printf "$key $value\n"
done
done
)
BASH VERSION = 4.4.19(1)-release
--------------------------------
alpha = 1
alpha = 2
alpha = 3
beta = 1
beta = 2
beta = 3
gamma = 1
gamma = 2
gamma = 3
#################################################################
BASH VERSION = 4.2.46(2)-release
--------------------------------
alpha = 1 alpha 2 alpha 3 beta 1 beta 2 beta 3 gamma 1 gamma 2 gamma 3
Еще Bash имеет плохую производительность и не может полноценно выполнять арифметические операции, но учитывая специфику задач, которые он решает, это не так уж и важно. Если вам нужны более производительные сценарии, которые требуют также обработки сложных структур данных, следует отдавать предпочтение более продвинутым скриптовым языкам, например Perl.
Версия Bash
Материал этой книги написан в основном относительно Bash 4. Использовать командную оболочку меньшей версии крайне не рекомендуется из-за проблем в безопасности старых версий.
На момент написания книги автор использовал версию 4.4.19(1)-release.
Как читать эту книгу
Книгу можно начать читать с любой главы, так как каждая из них рассматривает тему обособленно. Тем не менее, порядок глав выстроен в логическом порядке (от частных вещей к более общим).
См. также
Ссылки
- Bash Reference Manual(англ.) — Официальное руководство. Проверено 22 ноября 2010 г. Архивировано из первоисточника 23 августа 2011.
- Bash Reference Manual — Перевод man-страницы от 2004 года.