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

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

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

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

Тепер давайте розберемося з нашим визначенням і почнемо з короткого прикладу створення функцій Bash. Наступний синтаксис можна використовувати в середовищах на основі Unix. Якщо ви працюєте на Windows, ви можете встановити Linux Bash на Windows 10 наслідувати ці приклади.
Створення функції Bash
Почніть із використання такої командної структури:
ім'я_функції () {
Сюди входять # команди
}
Створивши функцію, ви можете будь-коли використовувати її у своєму коді. Ось робочий приклад:
привітати () {
echo «Привіт, $1!»
}
Викличте цю функцію за допомогою вітай Світ щоб вивести «Hello, World!» The $1 представляє перший аргумент, переданий у функцію.
Ось ще кілька практичних прикладів, які ви можете використовувати у своїх власних сценаріях:
# Створіть резервну копію будь-якого файлу
backup_file () {
cp “$1” “$1.bak”
echo «Створено резервну копію: $1.bak»
}
# Перевірте, чи існує каталог, створіть, якщо його немає
secure_dir () {
якщо [! -d “$1” ]; потім
mkdir -p “$1”
echo «Створено каталог: $1»
fi
}
# Журнал повідомлень із мітками часу
log_message () {
echo “[$(дата ‘+%Y-%m-%d %H:%M:%S’)] $1”
}
Ви визначаєте ці користувацькі функції Bash один раз і викликаєте їх у будь-який час у своєму сценарії.
Основи синтаксису функцій
Функції поводяться як міні-скрипти в основному сценарії, але вони спільно використовують пам’ять оболонки. Майте на увазі ці три особливості поведінки, пишучи їх.
Область змінної (локальна чи глобальна)
Змінні всередині функцій є глобальними за замовчуванням. Якщо визначити my_var=”тест” всередині функції він перекриває будь-який існуючий my_var у вашому сценарії. Завжди використовуйте місцевий обмеження змінних функцією запобігає побічним ефектам:
локальна my_var=”значення”
Позиційні параметри
Функції читають аргументи, використовуючи те саме $1, $2, і $@ змінні як сценарії. Вони локальні для функції та скидаються, коли функція виходить. Вихідні аргументи сценарію недоступні всередині функції, якщо ви не передасте їх явно.
Повернуті значення
Функції Bash не повертають дані, як функції Python або JavaScript. The повернення Команда лише встановлює статус виходу (0-255), щоб вказати успіх або невдачу. Щоб повернути фактичні дані (наприклад, рядок або обчислення), луна результат і зафіксувати його під час виклику функції:
результат=$(моя_функція)
Топ-10 корисних прикладів функцій Bash
Тепер, коли ви розумієте функції Bash і як їх створювати, ось десять практичних прикладів, які ви можете додати до своїх сценаріїв. Кожна функція вирішує загальну проблему та демонструє належну структуру, аргументи та значення, що повертаються.
1. Функція резервного копіювання файлів
Створює резервну копію будь-якого файлу з позначкою часу:
backup_file () {
локальний файл=”$1″
локальне резервне копіювання=”${файл}.$(дата +%Y%m%d_%H%M%S).bak”
if [ -f “$file” ]; потім
cp “$file” “$backup”
echo «Створено резервну копію: $backup»
повернути 0
інше
echo «Помилка: файл не знайдено»
повернення 1
fi
}
Використання: резервний_файл /etc/nginx/nginx.conf
2. Перевірка довідників
Перевіряє, чи існує каталог, і за потреби створює його:
secure_dir () {
локальний каталог=”$1″
якщо [! -d “$dir”]; потім
mkdir -p “$dir”
echo «Створено: $dir»
fi
}
Використання: secure_dir /var/log/myapp
3. Логер із міткою часу
Додає мітки часу до повідомлень журналу для налагодження:
log_message () {
місцевий рівень=”$1″
локальне повідомлення=”$2″
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] [$level] $message”
}
Використання: log_message “INFO” “Сценарій запущено”
4. Монітор дискового простору
Перевіряє використання диска та попереджає, якщо воно перевищує порогове значення:
check_disk_space () {
локальний поріг=”${1:-80}”
локальне використання=$(df / | tail -1 | awk ‘{print $5}’ | tr -d ‘%’)
if [ “$usage” -gt “$threshold” ]; потім
echo «Попередження: використання диска становить ${usage}%»
повернення 1
fi
повернути 0
}
Використання: check_disk_space 90
5. Валідатор введення
Перевіряє, що введені користувачем дані не пусті:
validate_input () {
локальний вхід=”$1″
місцева назва=”$2″
if [ -z “$input” ]; потім
echo "Помилка: $name не може бути порожнім"
повернення 1
fi
повернути 0
}
Використання: validate_input “$username” “Ім’я користувача”
6. Перевірка стану служби
Перевіряє, чи працює служба, і повідомляє про її статус:
check_service () {
місцеве обслуговування=”$1″
якщо systemctl активний – тихо «$service»; потім
echo “$service запущено”
повернути 0
інше
echo “$service не працює”
повернення 1
fi
}
Використання: check_service nginx
7. Екстрактор розширень файлів
Витягує розширення з імені файлу:
get_extension () {
локальна назва файлу=”$1″
echo “${filename##*.}”
}
Використання: ext=$(get_extension “document.pdf”)
8. Струнний тример
Видаляє пробіли на початку та в кінці рядків:
trim_string () {
місцевий str=”$1″
str=”${str#”${str%%[![:пробіл:]]*}”}”
str=”${str%”${str##*[![:пробіл:]]}”}”
echo “$str”
}
Використання: clean=$(trim_string ”привіт світ”)
9. Безпечний архіватор файлів
Переміщує файл до спеціального каталогу $HOME/.trash замість остаточного видалення. До назви файлу додається мітка часу, щоб запобігти перезапису попередніх резервних копій.
safe_remove() {
локальний файл=”$1″
локальний смітник=”$HOME/.trash”
# Додайте мітку часу, щоб уникнути перезапису існуючих файлів
local new_name=”$(базова назва “$file”)_$(дата +%s)”
mkdir -p «$кошик»
if [ -e “$file” ]; потім
mv “$file” “$trash/$new_name”
echo “Переміщено до архіву: $file -> $trash/$new_name”
інше
echo «Помилка: $файл не знайдено»
повернення 1
fi
}
Використання: safe_remove old_script.sh
10. Репортер статусу
Демонструє механізм повернення функції Bash для обробки помилок. Повернене значення функції Bash вказує на успіх (0) або помилку (не нуль):
process_data () {
локальний файл=”$1″
якщо [! -f “$файл”]; потім
повернення 1
fi
# Обробити файл
cat “$file” | wc -l
повернути 0
}
# Перевірте значення, що повертається
process_data “data.txt”
якщо [ $? -екв 0]; потім
echo «Обробку завершено»
інше
echo «Помилка обробки»
fi
The $? змінна фіксує статус виходу з останньої команди або виклику функції.
| функція | призначення | Ключова функція |
| резервний_файл | Створення резервних копій файлів | Назви з міткою часу |
| secure_dir | Керування каталогом | Створює, якщо відсутній |
| log_message | Лісозаготівля | Префікс часової позначки |
| перевірити_диск_простір | Системний моніторинг | Порогові сповіщення |
| validate_input | Перевірка введених даних | Перевірка порожнього рядка |
| check_service | Моніторинг служби | Інтеграція Systemd |
| get_extension | Розбір рядків | Розширення параметрів |
| trim_string | Очищення рядка | Видалення пробілів |
| safe_remove | Безпечне видалення | Каталог сміття |
| дані_процесу | Обробка помилок | Повернуті значення |
Запуск функцій Bash на VPS
Функції Bash стають потужними під час роботи в середовищі виділеного сервера. наш Linux VPS надає вам повний кореневий доступ для налаштування середовища оболонки, створення загальносистемних бібліотек функцій і автоматизації завдань керування сервером без обмежень.
За допомогою VPS ви можете зберігати багаторазові функції /etc/profile.d/ для всіх користувачів плануйте виконання сценаріїв на основі функцій через завдання cron і створюйте конвеєри автоматизації для розгортання та обслуговування. Ми пропонуємо сервери в 12 глобальних місцях зі швидкістю мережі до 40 Гбіт/с і пам’яттю DDR5, що означає швидше виконання сценаріїв і плавнішу обробку даних.
Цей рівень контролю робить VPS ідеальним для тих, хто серйозно займається сценаріями оболонки та автоматизацією системи.
Висновок
Функції bash є ключовими для створення модульних сценаріїв, які можна багаторазово використовувати. Вони дозволяють групувати пов’язані команди разом і інкапсулювати складну логіку, щоб полегшити читання та підтримку коду. Якщо ви керуєте хмарною інфраструктурою, автоматизуєте конвеєри розгортання або виконуєте рутинні завдання системного адміністрування, функції допомагають підтримувати ваші сценарії впорядкованими та ефективними.
У цій статті ми розглянули основи функцій Bash, включаючи те, як їх визначати та викликати, десять практичних прикладів функцій і загальні випадки використання, які допоможуть вам розпочати роботу над власними проектами автоматизації.
У поєднанні з такими структурами управління, як Оператор Bash if, функції дають вам будівельні блоки для потужної автоматизації. Використовуючи функції Bash у своїх сценаріях, ви можете писати чистіший, більш модульний код, який легше зрозуміти та підтримувати.