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

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

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

Для создания (объявления) функции необходимо использовать следующий формат

Ключевое слово function перед именем функции является необязательным. Чтобы быть совместимым с POSIX, имя функции bash не может содержать никаких символов, кроме букв, цифр и знаков подчеркивания, и не может начинаться с цифры.

Вызов bash функции

Как только функция bash определена, можно ее вызвать в сценарии. В bash нужно определить функцию перед ее вызовом, функция должна быть выше по тексту сценария чем ее вызов. В противном случае вы увидите ошибку "command not found". Для вызова функции достаточно использовать в тексте сценария ее имя.

В результате работы сценария в консоль будет выведен текст "Hello world"

Создание локальной переменной в bash функции

Для создания локальной переменной, которая видна (возможно использовать) только внутри функции используется параметр local перед вызовом переменной

в результате в скрипт вернет:

Передача аргументов (параметров) в функцию bash

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

Например, на первый параметр ссылается $1, на второй параметр - $2 и т. д.

В результате функция вернет следующий текст

Выход из bash функции

Если необходимо выйти из сценария, то для этого возможно использовать команду return

Цифра возвращается в основной скрипт как статус выхода функции. При этом значение функции return является необязательным, и в этом случае статус выхода функции будет статусом последней команды, выполненной внутри функции. Когда return встречается внутри функции bash, функция немедленно завершается, и управление возвращается основному сценарию.

в результате  скрипт вернет

Функцию return можно использовать для выхода из цикла, она остановит выполнения сценария функции и вернет управления основному сценарию.

Возврат значения из функции Bash

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

Использование глобальной переменной

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

В результате работы сценарий вернет

Использование команды echo

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

В результате сценарий выедет

Понравилась статья? Поделиться с друзьями:
Добавить комментарий