Как создавать и вызывать функции в Bash

Краткое руководство по созданию и вызову функций в Bash.

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

Bash предоставляет некоторые встроенные функции, такие как echo и read, но мы также можем создавать свои собственные функции.




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

Есть два способа создания функций в Bash:

Один из способов - просто использовать имя функции, например:


functionName(){ // scope of function }

Компактная версия:

functionName(){ echo 'hello'; }

Другой способ - объявить функцию с помощью function ключевое слово:

function functionName { // scope of function }

Компактная версия:

function functionName { echo 'hello'; }

Обратите внимание, что нам не нужен () при использовании function ключевое слово для создания функции.


Важные замечания о функциях Bash:

  • Код между фигурными скобками {} это тело функции и область видимости
  • При вызове функции мы просто используем имя функции из любого места в сценарии bash.
  • Функция должна быть определена до того, как ее можно будет использовать.
  • При использовании компактной версии последняя команда должна иметь точку с запятой ;

Пример:

Следующий код создает функцию, которая выводит на консоль «Hello World». Имя функции называется printHello :

#!/bin/bash printHello(){
echo 'Hello World!' }


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

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


Например:

#!/bin/bash printHello(){
echo 'Hello World!' } # Call printHello function from anywhere in the script by writing the name printHello

Выход:

'Hello World'

Передача аргументов

Вышеупомянутая функция printHello() не имеет параметров. Каждый раз, когда мы его вызываем, мы получаем результат «Hello World». Но что, если мы захотим создать более общую функцию? Например, мы можем вызвать функцию с некоторым аргументом, и она напечатает то, что мы ей отправим.

Это можно сделать двумя способами.


Сначала мы можем изменить printHello() функция для печати переданных ей аргументов:

Например:

#!/bin/bash printAny(){
echo 'Hello ' $1 } printAny World printAny DevQa printAny I love coding!

Выход:

Hello World Hello DevQA Hello I

Обратите внимание, как третий оператор печати printAny I love coding! выводится только «Привет, я».


Это потому, что наша функция предназначена только для 1 параметра $1. Слово «Я люблю кодировать!» на самом деле 3 параметра.

Если бы мы хотели напечатать все это, нам нужно было бы заключить текст в кавычки

Например:

#!/bin/bash printAny(){
echo 'Hello ' $1 } printAny 'I love coding!'

Выход:

Hello I love coding

Другой пример, мы также можем передавать цифры:

#!/bin/bash add() {
result=$(($1 + $2))
echo 'Result is: $result' } add 1 2

Выход:

Result is: 3

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

Функции Bash также могут возвращать значения.

Например:

#!/bin/bash add() {
result=$(($1 + $2)) } add 1 2 echo 'The sum is: '$result

Выход:

The sum is: 3

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

Например:

#!/bin/bash add () { local result=$(($1 + $2)) echo '$result' } result='$(add 1 2)' echo 'The sum is: '$result

Выход:

The sum is: 3