Знижка 50% усі тарифи, обмежений час. Починаючи від $2.48/mo
11 хв залишилось
Сервери та ОС

Bash-функції: синтаксис, приклади та сценарії використання

Келі Вотсон By Келі Вотсон 11 хв читання Оновлено 14 грудня 2025
Абстрактна 3D-ілюстрація світних синіх блоків коду, що складаються в модульну структуру і символізують Bash-функції

Функції Bash групують пов'язані команди під одним ім'ям. Коли ви викликаєте це ім'я, виконується весь блок. Ви можете передавати аргументи, щоб налаштувати поведінку, і повертати значення для передачі результатів. Це робить код чистим і зручним у підтримці.

Linux домінує у серверних середовищах по всьому світу, тому вміння працювати з функціями Bash важливіше, ніж будь-коли. Функції перетворюють заплутані скрипти на чисту, багаторазову автоматизацію.

Цей посібник проведе вас від базового синтаксису до складних сценаріїв використання. Ви навчитеся оголошувати функції, передавати параметри, обробляти значення, що повертаються, та ознайомитеся з десятьма практичними прикладами, які можна використовувати у власних скриптах.

Коротко кажучи

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

Що таке Bash-скриптинг?

3D-ілюстрація цифрового сувою з кодом Bash, що світиться і пишеться сам по собі — символ автоматизації за допомогою Bash-скриптингу.

Bash-скриптинг — це метод автоматизації завдань за допомогою оболонки Bash. Вона є стандартним інтерфейсом командного рядка у Linux і залишається стандартним інструментом у macOS. Bash-скрипт — це програма, написана мовою Bash, яку можна запустити в терміналі або як окремий файл скрипта.

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

Bash-скриптинг дозволяє виконувати завдання різної складності — від простих команд до комплексної автоматизації та системного адміністрування. Ви можете автоматизувати повторювані задачі, писати скрипти для обслуговування систем, будувати конвеєри розгортання, керувати програмним забезпеченням і обробляти дані.

Що таке функція Bash?

Футуристична цифрова ілюстрація: заплутані дані командного рядка впорядковуються через світний обробний шлюз — символ того, як працює функція Bash. Ліва частина залишена порожньою.

Функцію Bash можна визначити як набір команд, оголошених або всередині Bash-скрипта, або інтерактивно — безпосередньо в командному рядку, залежно від задачі. Після оголошення функцію Bash можна викликати скільки завгодно разів — як у межах того самого скрипта, так і в інших скриптах, як звичайну команду оболонки.

Функції Bash дозволяють створювати багаторазові блоки коду, що виконують складні операції, структурують ваш код і спрощують скрипти. Ви можете передавати аргументи у функцію Bash і використовувати їх всередині неї для виконання операцій. Функції Bash повертають значення, які можна використовувати в інших частинах скрипта.

Ми розглянемо кілька конкретних стилів реалізації, зокрема simple_function для базової логіки, simple_inputs для обробки аргументів, а також складніші структури, наприклад fibonnaci_recursion.

Основи функцій Bash важливо для будь-якого системного адміністратора або DevOps-інженера, який працює з автоматизацією. Наступні розділи детально розглядають кожен із цих типів.

Навіщо використовувати функції Bash?

Синя шестерня з символами оптимізації, що керує кодовою машиною — ілюстрація ефективності та швидкості, яку дають функції Bash.

Тепер, коли з визначенням функцій 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-функції у скриптах, ви пишете чистіший, модульніший код, який легше розуміти та підтримувати.

Часто задавані питання

Чи можуть Bash-функції мати локальні змінні?

Так. У Bash-функціях можна оголошувати локальні змінні за допомогою ключового слова local. Це обмежує область видимості змінної межами функції та запобігає конфліктам з однойменними змінними за її межами.

Чи можуть Bash-функції бути рекурсивними?

Так, Bash-функції можуть бути рекурсивними. За замовчуванням Bash має відносно невеликий розмір стека викликів, тому залежно від глибини рекурсії вам може знадобитися збільшити його за допомогою команди ulimit -s перед запуском.

Чи можна використовувати Bash-функції в інших скриптах?

Так, Bash-функціями можна ділитися між скриптами за допомогою команди source (або її скороченого запису .). Підключивши файл з визначеннями функцій, ви зробите їх доступними у скрипті, що викликає. Для дочірніх процесів використовуйте export -f function_name, щоб функція була доступна в них.

Чи можна використовувати Bash-функції у конвеєрах?

Так, але для зовнішніх команд це потребує певних кроків. Всередині скрипту ви можете передавати дані безпосередньо у функцію через конвеєр (наприклад, cat file | my_function). Однак команди на зразок xargs або find -exec запускаються в новому середовищі. Щоб використати там функцію, потрібно її експортувати (export -f my_func), а потім явно викликати Bash (наприклад, xargs bash -c 'my_func "$@"').

Що таке функція у shell-скрипті?

Функція у shell-скрипті - це іменований блок коду, який виконує певне завдання і може викликатися з різних місць скрипту. Функції добре підходять для модульної організації коду: вони спрощують повторне використання та полегшують підтримку. У контексті Bash-скриптингу функції інкапсульовані в межах загального скрипту.

Поділитися

Ще з блогу

Читайте далі.

Обкладинка статті про найкращі self-hosted застосунки для Cosmos Cloud з панелями застосунків навколо дашборду Cosmos.
Сервери та ОС

Найкращі self-hosted застосунки для Cosmos Cloud: файли, медіа, паролі, автоматизація та не тільки!

Maybe ви вже налаштували Cosmos Cloud і хочете знайти застосунки, що добре з ним поєднуються, або ще не визначились із Cosmos і просто хочете зрозуміти, наскільки він підходить для вашого робочого процесу

Нік СільверНік Сільвер 16 хвилин читання
Portainer проти Cosmos Cloud для керування Docker застосунками: обкладинка з діаграмою гібридного налаштування та неоновими блоками ops і access.
Сервери та ОС

Portainer проти Cosmos Cloud: що краще для керування додатками Docker

Якщо ви вже знайомі з Docker і просто шукаєте зручніший спосіб запустити зростаючий стек додатків, ось коротка відповідь на питання Portainer проти Cosmos Cloud. Portainer — кращий вибір для безпосереднього

Нік СільверНік Сільвер 14 хв читання
Порівняльна графіка Cosmos Cloud, CasaOS та Umbrel, що показує три варіанти самостійного хостингу в межах однієї абстрактної хмарної мережі.
Сервери та ОС

Cosmos Cloud проти CasaOS проти Umbrel: яка платформа для самостійного хостингу підійде саме вам?

Коротко: CasaOS досі найлегший варіант для початку, Umbrel має найохайніший і найретельніше підібраний інтерфейс, а Cosmos Cloud стає доцільнішим, коли потрібен щільніший контроль над доменами

Нік СільверНік Сільвер 11 хв читання

Готові до розгортання? З $2.48/міс.

Незалежна хмара з 2008 року. AMD EPYC, NVMe, 40 Gbps. Повернення коштів протягом 14 днів.