Bash:
Организация кода в функции
Как это сделать:
Создайте простую функцию в Bash:
greet() {
echo "Привет, $1!"
}
Используйте её, вызвав функцию с параметром:
greet "Мир" # Вывод: Привет, Мир!
Функции могут возвращать значения с помощью return
для числовых кодов состояния (но не для возврата фактических данных):
add() {
return $(($1 + $2))
}
add 3 4
echo $? # Вывод: 7
Обратите внимание, что $?
захватывает возвращаемое значение последней команды, которое является числовым результатом add
.
Подробнее
В Bash функции служат способом компартментализации кода с самых ранних версий. Исторически, использование функций соответствует принципам структурного программирования, введенным в 1960-х годах для повышения качества кода.
Альтернативы функциям включают подключение файлов скриптов или использование псевдонимов, но они не предлагают такого же уровня модульности и переиспользования.
Заметной деталью реализации в Bash является то, что функции являются объектами первого класса; у них нет специфического ключевого слова для объявления, как function
в других языках, хотя function
в Bash допускается для улучшения читаемости. Область видимости функций также интересна — переменные по умолчанию являются глобальными, если не объявлены как локальные, что может привести к неожиданному поведению, если это не управлять должным образом.
См. также
- Руководство по Bash о функциях оболочки: https://www.gnu.org/software/bash/manual/html_node/Shell-Functions.html
- Расширенное руководство по скриптам Bash: https://tldp.org/LDP/abs/html/functions.html
- “Профессиональное программирование на Bash: Сценарии оболочки GNU/Linux” для изучения концепций и практик скриптинга функций в глубину.