Краткое руководство по созданию и вызову функций в Bash.
Функция - это блок многократно используемого кода, который используется для выполнения некоторого действия. Благодаря функциям мы получаем лучшую модульность и высокую степень повторного использования кода.
Bash предоставляет некоторые встроенные функции, такие как echo
и read
, но мы также можем создавать свои собственные функции.
Есть два способа создания функций в Bash:
Один из способов - просто использовать имя функции, например:
functionName(){ // scope of function }
Компактная версия:
functionName(){ echo 'hello'; }
Другой способ - объявить функцию с помощью function
ключевое слово:
function functionName { // scope of function }
Компактная версия:
function functionName { echo 'hello'; }
Обратите внимание, что нам не нужен ()
при использовании function
ключевое слово для создания функции.
Важные замечания о функциях Bash:
{}
это тело функции и область видимости;
Пример:
Следующий код создает функцию, которая выводит на консоль «Hello World». Имя функции называется printHello :
#!/bin/bash printHello(){
echo 'Hello World!' }
Как мы вызываем вышеуказанную функцию? Все, что вам нужно сделать в вашем сценарии 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