скидка 50% все планы, время ограничено. Начиная с $2.48/mo
осталось 11 минут
Серверы и ОС

Объяснение функций Bash: синтаксис, примеры и варианты использования

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

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

Linux доминирует в серверных средах во всем мире, поэтому освоение функций Bash сейчас важно как никогда. Функции превращают беспорядочные сценарии в чистую, многоразовую автоматизацию.

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

ТЛ;ДР

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

Что такое сценарии 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 возвращают значения, которые вы можете использовать в другом месте вашего скрипта.

Мы рассмотрим несколько конкретных стилей реализации, включая простая_функция для базовой логики, simple_inputs для обработки аргументов и расширенных структур, таких как fibonnaci_recursion.

Основы функций Bash Это важно для любого системного администратора или DevOps-инженера, работающего с автоматизацией. В следующих разделах подробно рассматривается каждый из этих типов.

Зачем использовать функции Bash?

Светящаяся синяя шестеренка с символами оптимизации, управляющими кодовой машиной, символизирует эффективность и скорость, достигнутые за счет использования функций Bash.

Теперь, когда мы рассмотрели определение функций Bash, давайте рассмотрим их основные преимущества. Этот раздел поможет вам понять, где функции наиболее полезны.

Многоразовое использование

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

Это делает ваш код более эффективным и экономит время за счет устранения дублирования. Сопровождение вашего кода становится проще, поскольку вам нужно изменить функцию только в одном месте.

Читабельность

Сложные сценарии могут быть трудными для расшифровки. Функции Bash решают эту проблему, разбивая ваш скрипт на более мелкие и более управляемые части.

Каждая функция служит определенной цели и имеет описательное имя, объясняющее ее роль. Это поможет вам и другим людям легче понимать и поддерживать код.

Модульность

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

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

Параметры функции Bash

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

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

Как и где использовать функции Bash?

Трехмерная блок-схема, показывающая разветвление выполнения сценария на функциональный блок и возврат, визуализируя, как функции Bash используются в логическом потоке.

Теперь давайте немного углубимся в наше определение и начнем с короткого примера создания функций Bash. Следующий синтаксис можно использовать в средах на базе Unix. Если вы работаете в Windows, вы можете установить Linux Bash на Windows 10 следовать этим примерам.

Создание функции Bash

Начните с использования следующей структуры команд:

имя_функции () {

    Здесь находятся # команды

}

 

Создав функцию, вы можете использовать ее в своем коде в любое время. Вот рабочий пример:

приветствовать () {

    echo «Привет, 1 доллар!»

}

 

Вызовите эту функцию с помощью приветствовать мир для вывода «Hello, World!» $1 представляет первый аргумент, передаваемый функции.

Вот еще несколько практических примеров, которые вы можете использовать в своих собственных сценариях:

# Создать резервную копию любого файла

файл_резервной копии () {

    cp “$1” “$1.bak”

    echo «Резервная копия создана: $1.bak»

}

 

# Проверяем, существует ли каталог, если нет, создаем

обеспечения_каталог () {

    если [ ! -d «1 доллар»]; затем

        mkdir -p «$1»

        echo «Созданный каталог: $1»

    fi

}

 

# Записывать сообщения с временными метками

log_message () {

    echo «[$(дата ‘+%Y-%m-%d %H:%M:%S’)] $1»

}

 

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

Основы синтаксиса функций

Функции ведут себя как мини-скрипты в вашем основном скрипте, но они используют память оболочки. При написании учитывайте эти три конкретных поведения.

Область действия переменной (локальная или глобальная)

Переменные внутри функций по умолчанию являются глобальными. Если вы определите my_var="тест" внутри функции он переопределяет любые существующие мой_вар в вашем сценарии. Всегда используйте местный ограничение переменных функцией предотвращает побочные эффекты:

локальный my_var = «значение»

Позиционные параметры

Функции читают аргументы, используя одни и те же $1, $2, и $@ переменные как скрипты. Они являются локальными для функции и сбрасываются при выходе из функции. Исходные аргументы сценария недоступны внутри функции, если вы не передадите их явно.

Возвращаемые значения

Функции Bash не возвращают данные, как функции Python или JavaScript. возвращаться Команда устанавливает только статус выхода (0–255), указывающий на успех или неудачу. Чтобы вернуть фактические данные (например, строку или расчет), эхо результат и зафиксируйте его при вызове функции:

результат = $(my_function)

Топ-10 полезных примеров функций Bash

Теперь, когда вы понимаете функции Bash и способы их создания, вот десять практических примеров, которые вы можете добавить в свои сценарии. Каждая функция решает общую проблему и демонстрирует правильную структуру, аргументы и возвращаемые значения.

1. Функция резервного копирования файлов

Создает резервную копию любого файла с отметкой времени:

файл_резервной копии () {

    локальный файл = ”$1″

    локальная резервная копия = ”${файл}.$(дата +%Y%m%d_%H%M%S).bak”

    

    если [ -f «$файл»]; затем

        cp «$file» «$backup»

        echo «Резервная копия создана: $backup»

        вернуть 0

    еще

        эхо «Ошибка: файл не найден»

        вернуть 1

    fi

}

 

Использование: файл_резервной копии /etc/nginx/nginx.conf

2. Проверка каталогов

Проверяет, существует ли каталог, и при необходимости создает его:

обеспечения_каталог () {

    локальный каталог = ”$1″

    

    если [ ! -d «$каталог»]; затем

        mkdir -p “$каталог”

        echo «Создано: $dir»

    fi

}

 

Использование: обеспечения_dir /var/log/myapp

3. Регистратор с отметкой времени

Добавляет метки времени в журнал сообщений для отладки:

log_message () {

    локальный уровень = ”$1″

    локальное сообщение = ”$2″

    echo «[$(дата ‘+%Y-%m-%d %H:%M:%S’)] [$level] $message»

}

 

Использование: log_message «ИНФО» «Скрипт запущен»

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″

    

    если [ -z «$input»]; затем

        echo «Ошибка: $name не может быть пустым»

        вернуть 1

    fi

    вернуть 0

}

 

Использование: validate_input «$username» «Имя пользователя»

6. Проверка статуса услуги

Проверяет, запущена ли служба, и сообщает о состоянии:

check_service () {

    местная служба = ”$1″

    

    если systemctl активен – тихий «$service»; затем

        echo «$сервис работает»

        вернуть 0

    еще

        эхо «$сервис не запущен»

        вернуть 1

    fi

}

 

Использование: check_service nginx

7. Экстрактор расширений файлов

Извлекает расширение из имени файла:

get_extension () {

    локальное имя файла = ”$1″

    эхо «${имя_файла##*.}»

}

 

Использование: ext=$(get_extension «документ.pdf»)

8. Триммер для струн

Удаляет начальные и конечные пробелы из строк:

обрезка_строка () {

    локальная ул = ”$1″

    str="${str#"${str%%[![:space:]]*}"}”

    str="${str%"${str##*[![:space:]]}"}”

    эхо «$str»

}

 

Использование: clean=$(trim_string «привет, мир»)

9. Безопасный архиватор файлов

Перемещает файл в пользовательский каталог $HOME/.trash вместо его окончательного удаления. К имени файла добавляется временная метка, чтобы предотвратить перезапись предыдущих резервных копий.

Safe_remove() {

    локальный файл = ”$1″

    местный мусор =”$HOME/.trash”

    # Добавляем временную метку, чтобы избежать перезаписи существующих файлов

    local new_name="$(базовое имя "$file")_$(дата +%s)"

    

    mkdir -p «$ мусор»

 

    если [ -e «$файл»]; затем

        mv «$file» «$trash/$new_name»

        echo «Перемещено в архив: $file -> $trash/$new_name»

    еще

        echo «Ошибка: $файл не найден»

        вернуть 1

    fi

}

 

Использование: Safe_remove old_script.sh

 

10. Репортер статуса

Демонстрирует механизм возврата функции Bash для обработки ошибок. Возвращаемое значение функции Bash указывает на успех (0) или неудачу (не ноль):

данные_процесса () {

    локальный файл = ”$1″

    

    если [ ! -f «$файл»]; затем

        вернуть 1

    fi

    

    # Обрабатываем файл

    кот «$файл» | туалет -л

    вернуть 0

}

 

# Проверяем возвращаемое значение

Process_data «data.txt»

если [ $? -экв 0 ]; затем

    эхо «Обработка завершена»

еще

    эхо «Ошибка обработки»

fi

 

The $? Переменная фиксирует статус завершения последней команды или вызова функции.

Функция Цель Ключевая особенность
файл резервной копии Создание резервных копий файлов Именование с отметкой времени
обеспечения_каталог Управление каталогом Создает, если отсутствует
log_message Ведение журнала Префикс временной метки
check_disk_space Системный мониторинг Пороговые оповещения
validate_input Проверка ввода Проверка пустой строки
check_service Мониторинг услуг Системная интеграция
get_extension Разбор строк Расширение параметров
обрезка_строка Очистка строк Удаление пробелов
Safe_remove Безопасное удаление Каталог корзины
процесс_данные Обработка ошибок Возвращаемые значения

Запуск функций Bash на VPS

Функции Bash становятся мощными при работе в среде выделенного сервера. Наш Linux VPS дает вам полный root-доступ для настройки среды оболочки, создания общесистемных библиотек функций и автоматизации задач управления сервером без ограничений.

С помощью VPS вы можете хранить повторно используемые функции в /etc/profile.d/ для всех пользователей планируйте сценарии на основе функций с помощью заданий cron и создайте конвейеры автоматизации для развертывания и обслуживания. Мы предлагаем серверы в 12 точках по всему миру со скоростью сети до 40 Гбит/с и памятью DDR5, что означает более быстрое выполнение сценариев и более плавную обработку данных.

Такой уровень контроля делает VPS идеальным для тех, кто серьезно относится к написанию сценариев оболочки и автоматизации системы.

Заключение

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

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

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

Часто задаваемые вопросы

Могут ли функции Bash иметь локальные переменные?

Да. Функции Bash могут иметь локальные переменные, используя ключевое слово local. Это ограничивает область действия переменной функцией, не позволяя ей влиять на переменные с тем же именем вне функции.

Могут ли функции Bash быть рекурсивными?

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

Могу ли я использовать функции Bash в других скриптах?

Да, вы можете использовать функции Bash в разных сценариях, используя исходную команду (или ее сокращение .). Получая файл, содержащий определения ваших функций, вы делаете эти функции доступными в вызывающем скрипте. Для дочерних процессов используйте команду Export -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. Портейнер — более сильный выбор для режиссера

Ник СильверНик Сильвер 14 минут чтения
Графика Cosmo Cloud, CasaOS и Umbrel показывает три автономных пути внутри одного абстрактного облачного сетевого мира.
Серверы и ОС

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

Короткий ответ: CasaOS по-прежнему является самым простым местом для начала, Umbrel имеет самый чистый и тщательно продуманный интерфейс, а Cosmo Cloud имеет больше смысла, если вы хотите более жесткий контроль над doma.

Ник СильверНик Сильвер 11 минут чтения

Готовы к развертыванию? От $2,48 в месяц.

Независимое облако, с 2008 г. AMD EPYC, NVMe, 40 Гбит/с. 14-дневный возврат денег.