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

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

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

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

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

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

TL; DR

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

Що таке сценарії Bash?

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

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

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

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

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

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

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

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

e буде охоплювати кілька конкретних стилів реалізації, в тому числі проста_функція для основної логіки, прості_входи для обробки аргументів і вдосконалених структур, таких як fibonnaci_recursion.

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

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

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

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

FAQ

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

так Функції Bash можуть мати локальні змінні за допомогою ключового слова local. Це обмежує область видимості змінної функцією, не даючи їй впливати на змінні з тим самим іменем поза функцією.

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

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

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

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

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

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

Що таке функція сценарію оболонки?

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

Поділіться

Більше з блогу

Продовжуйте читати.

Найкращі самостійні програми, які можна запускати з Cosmos Cloud, зображення обкладинки з панелями програм навколо інформаційної панелі Cosmos.
Сервери та ОС

Найкращі автономні програми, які можна запускати з Cosmos Cloud: файли, медіа, паролі, автоматизація та багато іншого!

Можливо, ви налаштували Cosmos Cloud і тепер хочете побачити, які програми добре підходять до нього, а можливо, ви ще навіть не визначилися з Cosmos і просто хочете побачити, наскільки він підходить для вашої роботи.

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

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 Гбіт/с. 14-денне повернення грошей.