Як стварыць і выклікаць функцыі ў 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