Почти во всех языков программирования мы используем функцию, которая не что иное, как код, написанный в логическом блоке для выполнения повторяющихся или выполнение рекурсивных действий. В программировании оболочки также у нас есть нечто, называемое как функция в Bash, которая действует тот так же. В этом посте мы узнаем о функции Bash.
Структура показанная выше или основной строительный блок функции Bash также называют как определитель функции Bash. Убедитесь, что вы определяете эту функцию Bash перед вызовом его в любом месте.
В приведенном выше примере мы написали функцию Bash «print ()», которая печатает или сообщение в виде эха, когда вызывается функция. Как уже упоминалось выше, мы имеем функцию print (), а затем вызываем ее с помощью команды print ниже.
Теперь давайте перейдем к выполнению части.
В приведенном выше коде мы сделали сценарий оболочки function1.sh исполняемый с помощью команды chmod. И, как обычно, мы выполнили сценарий, используя «./», а затем название сценария оболочки.
В отличие от известных языков программирования, как C или Java, мы также можем передать аргументы или параметры сценариев в Bash. Давайте возьмем пример для передачи аргумента или параметра функцией.
Это та же функция, которую мы использовали в примере функции, однако на этот раз мы передаем два параметра или аргумента: RedHat_users и Ubuntu_users к функции print (). И этот аргумент мы используем, повторяя сообщение.
Позволим выполнить функцию, чтобы увидеть результат.
В отличии от основного языка программирования мы можем использовать возвращаемое значение, которое используется для отправки обратно значения данных к месту вызова.
[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.