Кароткае кіраўніцтва па тым, як ствараць і выклікаць функцыі ў 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