Почти во всех языков программирования мы используем функцию, которая не что иное, как код, написанный в логическом блоке для выполнения повторяющихся или выполнение рекурсивных действий. В программировании оболочки также у нас есть нечто, называемое как функция в Bash, которая действует тот так же. В этом посте мы узнаем о функции Bash.
Базовая структура функции Bash
Структура показанная выше или основной строительный блок функции Bash также называют как определитель функции Bash. Убедитесь, что вы определяете эту функцию Bash перед вызовом его в любом месте.
Пример функции Bash
В приведенном выше примере мы написали функцию Bash «print ()», которая печатает или сообщение в виде эха, когда вызывается функция. Как уже упоминалось выше, мы имеем функцию print (), а затем вызываем ее с помощью команды print ниже.
Теперь давайте перейдем к выполнению части.
В приведенном выше коде мы сделали сценарий оболочки function1.sh исполняемый с помощью команды chmod. И, как обычно, мы выполнили сценарий, используя «./», а затем название сценария оболочки.
Передача аргументов или параметров
В отличие от известных языков программирования, как C или Java, мы также можем передать аргументы или параметры сценариев в Bash. Давайте возьмем пример для передачи аргумента или параметра функцией.
Это та же функция, которую мы использовали в примере функции, однако на этот раз мы передаем два параметра или аргумента: RedHat_users и Ubuntu_users к функции print (). И этот аргумент мы используем, повторяя сообщение.
Позволим выполнить функцию, чтобы увидеть результат.
Повторные значения с помощью функции Bash
В отличии от основного языка программирования мы можем использовать возвращаемое значение, которое используется для отправки обратно значения данных к месту вызова.
[root@destroyer tmp]# cat function3.sh #!/bin/bash # Функция возвращает значение multiplication () { expr $1 \* $2 } ans=$(multiplication $1 $2) echo Умножение $1 на $2 равно: $ans [root@destroyer tmp]#
В приведенном выше примере мы передаем два аргумента $ 1 и $ 2, которые выводятся во время выполнения сценария оболочки. Внутри функции мы делаем умножение этих аргументов и отправляем их обратно. Ее инициализация с переменной под названием «ans», которая используется для печати возвращаемого значения.
Давайте посмотрим на выполнение одного и того же примера.
Повторное использование фактических команд с параметрами
Мы также можем написать функцию с таким же именем команды. В основном мы будем оборачивать действительные команды, предоставляя возможности для этого.
В приведенном выше примере команды wrapping, мы приняли команду «date» в качестве имени функции, и мы обернули его с помощью опции «+% D».
Таким образом, в идеале наша обычная команда для возвращения даты “Sat Mar 29 19:16:12 BDT 2017” в качестве вывода, однако наш выход команды wrapping дает выход как «29/03/17» из-за wrapping.