TGViewer
Библиотека девопса | DevOps, SRE, Sysadmin Библиотека девопса | DevOps, SRE, Sysadmin @devopsslib · 10.4K subscribers
Post #4706 1.11K
🛠 Функции в bash-скриптах

Если ваш скрипт перевалил за 30 строк и вы уже сами не понимаете, что происходит в середине это сигнал разбить его на функции.

Одна функция — одна задача

Это не правило из учебника, это практика. Когда каждая функция делает ровно одно дело, скрипт читается сверху вниз без лишних усилий. Видите имя функции и понимаете, что она делает.

Вот простой пример. Скрипт делает бэкап директории и пишет лог.
#!/bin/bash
set -euo pipefail

log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}

backup_files() {
local source_dir="$1"
local dest_dir="$2"
log "Backing up $source_dir to $dest_dir"
cp -r "$source_dir" "$dest_dir"
}

# Main
backup_files "/var/www" "/backups/www"
log "Done."


Обратите внимание на local перед переменными внутри backup_files. Без local переменная source_dir существует глобально. Если где-то ещё в скрипте есть переменная с таким же именем, вы получите баг, который сложно отловить. С local переменная живёт только внутри своей функции и нигде больше.

Ещё плюс это переиспользование. Функцию log можно взять и вставить в любой другой скрипт без изменений.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#root_prompt
  • ❤ 4
More from @devopsslib
  1. Sep 18, 2026От исходного кода до процессора: разберись, как работает программа 💻 Стартует практически…
  2. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  3. Sep 15, 2026👩‍💻 Bash-скрипт для мониторинга сервисов Полноценный мониторинг вроде Zabbix или Prometh…
  4. Sep 13, 2026🌸 Вселенная намекает: пора уже начать этот курс С 14 сентября цены в Proglib Academy выра…
  5. Sep 13, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
  6. Sep 10, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →