Функції Bash групують пов'язані команди під одним ім'ям. Коли ви викликаєте це ім'я, виконується весь блок. Ви можете передавати аргументи, щоб налаштувати поведінку, і повертати значення для передачі результатів. Це робить код чистим і зручним у підтримці.
Linux домінує у серверних середовищах по всьому світу, тому вміння працювати з функціями Bash важливіше, ніж будь-коли. Функції перетворюють заплутані скрипти на чисту, багаторазову автоматизацію.
Цей посібник проведе вас від базового синтаксису до складних сценаріїв використання. Ви навчитеся оголошувати функції, передавати параметри, обробляти значення, що повертаються, та ознайомитеся з десятьма практичними прикладами, які можна використовувати у власних скриптах.
Коротко кажучи
- Функції Bash — це іменовані блоки коду, які можна повторно використовувати у своїх скриптах
- Оголошуйте функції за допомогою function_name() { commands; } синтаксис
- Передавайте аргументи через $1, $2, $3 позиційні параметри
- Функції покращують читабельність коду, його модульність і зручність підтримки
- Використовуйте return для виходу з функцій і передачі кодів стану (0 = успіх, ненульове значення = помилка)
- Функції можна використовувати спільно між скриптами за допомогою source or export -f
- Практичні приклади охоплюють резервне копіювання файлів, моніторинг диска, валідацію введення та перевірку стану служб
Що таке Bash-скриптинг?

Bash-скриптинг — це метод автоматизації завдань за допомогою оболонки Bash. Вона є стандартним інтерфейсом командного рядка у Linux і залишається стандартним інструментом у macOS. Bash-скрипт — це програма, написана мовою Bash, яку можна запустити в терміналі або як окремий файл скрипта.
З Частка Linux серед настільних систем стабільно зростає і операційна система, що домінує у серверних середовищах по всьому світу, — навички Bash-скриптингу стають дедалі ціннішими для IT-фахівців. Ця мова добре інтегрується з інструментами DevOps, зокрема Docker, Kubernetes та CI/CD-конвеєрами.
Bash-скриптинг дозволяє виконувати завдання різної складності — від простих команд до комплексної автоматизації та системного адміністрування. Ви можете автоматизувати повторювані задачі, писати скрипти для обслуговування систем, будувати конвеєри розгортання, керувати програмним забезпеченням і обробляти дані.
Що таке функція Bash?

Функцію Bash можна визначити як набір команд, оголошених або всередині Bash-скрипта, або інтерактивно — безпосередньо в командному рядку, залежно від задачі. Після оголошення функцію Bash можна викликати скільки завгодно разів — як у межах того самого скрипта, так і в інших скриптах, як звичайну команду оболонки.
Функції Bash дозволяють створювати багаторазові блоки коду, що виконують складні операції, структурують ваш код і спрощують скрипти. Ви можете передавати аргументи у функцію Bash і використовувати їх всередині неї для виконання операцій. Функції Bash повертають значення, які можна використовувати в інших частинах скрипта.
Ми розглянемо кілька конкретних стилів реалізації, зокрема simple_function для базової логіки, simple_inputs для обробки аргументів, а також складніші структури, наприклад fibonnaci_recursion.
Основи функцій Bash важливо для будь-якого системного адміністратора або DevOps-інженера, який працює з автоматизацією. Наступні розділи детально розглядають кожен із цих типів.
Навіщо використовувати функції Bash?

Тепер, коли з визначенням функцій Bash розібралися, розглянемо їхні основні переваги. Цей розділ допоможе зрозуміти, де функції найкорисніші.
Можливість повторного використання
Функція Bash — це потужний інструмент. Ви пишете блок коду один раз і використовуєте його скільки завгодно разів у межах одного скрипту або в інших скриптах.
Це робить код ефективнішим і економить час завдяки усуненню дублювання. Підтримувати код стає простіше: щоб внести зміни, достатньо відредагувати функцію в одному місці.
Читабельність
Складні скрипти буває важко розібрати. Функції Bash вирішують цю проблему, розбиваючи скрипт на менші, зручніші частини.
Кожна функція виконує конкретне завдання і має описову назву, яка пояснює її призначення. Це полегшує розуміння та підтримку коду — і для вас, і для інших розробників.
Модульність
Функції впорядковують код. Ви розбиваєте логіку на менші модулі, завдяки чому структура скрипту залишається чіткою та зручною для роботи.
Якщо потрібно додати нову функціональність, можна зробити це, не торкаючись інших частин скрипту. Коли настає час прибрати або змінити якусь ділянку, решта скрипту залишається недоторканою.
Параметри функцій Bash
Функціям можна передавати аргументи, або параметри. Вони дозволяють функціям адаптуватися та виконувати різні дії залежно від отриманих вхідних даних.
Це відкриває широкі можливості й робить функції більш універсальними. Замість того щоб писати схожий код кілька разів, ви створюєте одну функцію, яка обробляє різні вхідні дані.
Як і де використовувати функції Bash?

Тепер перейдемо до практики і розглянемо короткий приклад створення функцій Bash. Наведений нижче синтаксис працює в Unix-середовищах. Якщо ви працюєте на Windows, можна встановити Linux Bash на Windows 10 щоб повторювати кроки разом із нами.
Створення функції Bash
Почніть із такої структури команди:
function_name () {
# команди йдуть сюди
}
Щойно функцію створено, її можна використовувати в коді будь-коли. Ось робочий приклад:
greet () {
echo "Привіт, $1!"
}
Викличте цю функцію з Привіт World щоб вивести «Hello, World!». Змінна $1 представляє перший аргумент, переданий функції.
Ось ще кілька практичних прикладів, які можна використати у власних скриптах:
# Створити резервну копію будь-якого файлу
backup_file () {
cp "$1" "$1.bak"
echo "Резервну копію створено: $1.bak"
}
# Перевірити, чи існує директорія, і створити її, якщо ні
ensure_dir () {
якщо [ ! -d "$1" ]; то
mkdir -p "$1"
echo "Директорію створено: $1"
fi
}
# Записувати повідомлення з часовими мітками
log_message () {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
Ці власні Bash-функції визначаються один раз і викликаються скрізь у скрипті, де потрібні.
Основи синтаксису функцій
Функції працюють як міні-скрипти всередині основного скрипту, але поділяють пам'ять оболонки. Пам'ятайте про три особливості їхньої поведінки під час написання.
Область видимості змінних (локальні та глобальні)
Змінні всередині функцій є глобальними за замовчуванням. Якщо визначити my_var="тест" всередині функції, це перезапише будь-яке наявне my_var у вашому скрипті. Завжди використовуйте local для обмеження змінних функцією — це запобігає побічним ефектам:
local my_var="value"
Позиційні параметри
Функції читають аргументи за допомогою тих самих $1, $2, і $@ змінних, що й скрипти. Вони є локальними для функції та скидаються після її завершення. Оригінальні аргументи скрипту недоступні всередині функції, якщо їх явно не передати.
Повернені значення
Bash-функції не повертають дані так, як функції Python або JavaScript. Команда return лише встановлює код завершення (0–255), що вказує на успіх або помилку. Щоб повернути справжні дані (наприклад, рядок або результат обчислення), echo результат і захопіть його під час виклику функції:
result=$(my_function)
10 корисних прикладів Bash-функцій
Тепер, коли ви розібралися з Bash-функціями та способами їх створення, ось десять практичних прикладів, які можна додати до своїх скриптів. Кожна функція вирішує типову задачу й демонструє правильну структуру, роботу з аргументами та повернення значень.
1. Функція резервного копіювання файлів
Створює резервну копію будь-якого файлу з часовою міткою:
backup_file () {
локальний файл="$1"
local backup="${file}.$(date +%Y%m%d_%H%M%S).bak"
якщо [ -f "$file" ]; то
cp "$file" "$backup"
echo "Резервну копію створено: $backup"
return 0
else
echo "Помилка: файл не знайдено"
return 1
fi
}
Використання: backup_file /etc/nginx/nginx.conf
2. Перевірка каталогів
Перевіряє, чи існує директорія, і створює її за потреби:
ensure_dir () {
локальний dir="$1"
якщо [ ! -d "$dir" ]; то
mkdir -p "$dir"
echo "Created: $dir"
fi
}
Використання: ensure_dir /var/log/myapp
3. Реєстратор з позначками часу
Додає мітки часу до повідомлень у журналі для налагодження:
log_message () {
місцевий рівень="$1"
локальне повідомлення="$2"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $message"
}
Використання: log_message "INFO" "Script started"
4. Моніторинг дискового простору
Перевіряє використання диска і попереджає, якщо воно перевищує заданий поріг:
check_disk_space () {
локальний поріг="${1:-80}"
local usage=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
if [ "$usage" -gt "$threshold" ]; then
echo "Warning: Disk usage at ${usage}%"
return 1
fi
return 0
}
Використання: check_disk_space 90
5. Валідатор введення
Перевіряє, що введені користувачем дані не порожні:
validate_input () {
локальний input="$1"
локальне ім'я="$2"
якщо [ -z "$input" ]; то
echo "Error: $name cannot be empty"
return 1
fi
return 0
}
Використання: validate_input "$username" "Ім'я користувача"
6. Перевірка стану сервісу
Перевіряє, чи запущено сервіс, і виводить його стан:
check_service () {
локальна служба="$1"
if systemctl is-active –quiet "$service"; then
echo "$service is running"
return 0
else
echo "$service is not running"
return 1
fi
}
Використання: check_service nginx
7. Отримання розширення файлу
Витягує розширення з імені файлу:
get_extension () {
локальний filename="$1"
echo "${filename##*.}"
}
Використання: ext=$(get_extension "document.pdf")
8. Тример для струн
Видаляє пробіли на початку та в кінці рядка:
trim_string () {
локальний str="$1"
str="${str#"${str%%[![:space:]]*}"}"
str="${str%"${str##*[![:space:]]}"}"
виведення "$str"
}
Використання: clean=$(trim_string " hello world ")
9. Безпечний архіватор файлів
Переміщує файл до спеціальної директорії $HOME/.trash замість остаточного видалення. До імені файлу додається мітка часу, щоб не перезаписати попередні резервні копії.
safe_remove() {
локальний файл="$1"
local trash="$HOME/.trash"
# Додаємо мітку часу, щоб уникнути перезапису наявних файлів
local new_name="$(basename "$file")_$(date +%s)"
mkdir -p "$trash"
if [ -e "$file" ]; then
mv "$file" "$trash/$new_name"
echo "Переміщено до архіву: $file -> $trash/$new_name"
else
echo "Помилка: файл $file не знайдено"
return 1
fi
}
Використання: safe_remove old_script.sh
10. Посадовець зі звітування про стан
Демонструє механізм повернення значень у Bash-функціях для обробки помилок. Значення, яке повертає Bash-функція, вказує на успіх (0) або невдачу (ненульове значення):
process_data () {
локальний файл="$1"
якщо [ ! -f "$file" ]; то
return 1
fi
# Обробляємо файл
cat "$file" | wc -l
return 0
}
# Перевіряємо значення повернення
обробити_дані "data.txt"
if [ $? -eq 0 ]; then
echo "Обробку завершено"
else
echo "Обробку не вдалося завершити"
fi
Той $? Змінна зберігає код виходу останньої виконаної команди або функції.
| Функція | Мета | Ключова особливість |
| backup_file | Створення резервних копій файлів | Назвавання з часовою міткою |
| ensure_dir | Управління каталогами | Створює, якщо відсутній |
| log_message | Реєстрація | Префікс часової позначки |
| check_disk_space | Моніторинг системи | Оповіщення про порогові значення |
| validate_input | Перевірка введених даних | Перевірка на порожній рядок |
| check_service | Моніторинг служб | Інтеграція Systemd |
| get_extension | Аналіз рядків | Розширення параметрів |
| trim_string | Очищення рядків | Видалення пробілів |
| safe_remove | Безпечне видалення | Папка зі сміттям |
| process_data | Обробка помилок | Повернені значення |
Запуск Bash-функцій на VPS
Bash-функції розкривають свій потенціал у середовищі виділеного сервера. Наш Linux VPS надає повний root-доступ для налаштування shell-середовища, створення загальносистемних бібліотек функцій і автоматизації управління сервером без жодних обмежень.
З VPS ви можете зберігати функції для повторного використання у /etc/profile.d/ для всіх користувачів, планувати запуск скриптів через cron jobs і будувати автоматизовані конвеєри для розгортання та обслуговування. Ми пропонуємо сервери у 12 локаціях по всьому світу зі швидкістю мережі до 40 Gbps і пам'яттю DDR5 — це означає швидше виконання скриптів і ефективнішу обробку даних.
Такий рівень контролю робить VPS оптимальним вибором для тих, хто серйозно займається shell-скриптингом і автоматизацією систем.
Висновок
Bash-функції — основа модульних і багаторазово використовуваних скриптів. Вони дають змогу об'єднувати пов'язані команди й інкапсулювати складну логіку, роблячи код зрозумілішим і простішим у підтримці. Незалежно від того, керуєте ви хмарною інфраструктурою, автоматизуєте конвеєри розгортання чи виконуєте рутинні завдання адміністрування систем — функції допоможуть тримати скрипти організованими та ефективними.
У цій статті ми розглянули основи Bash-функцій: як їх оголошувати та викликати, десять практичних прикладів і поширені сценарії використання — усе, що потрібно для старту власних проєктів з автоматизації.
У поєднанні з керуючими конструкціями, такими як Умовний оператор Bash if, функції дають вам базові блоки для потужної автоматизації. Використовуючи Bash-функції у скриптах, ви пишете чистіший, модульніший код, який легше розуміти та підтримувати.