Ինչպես ստեղծել և զանգահարել գործառույթներ Bash- ով

Բաշում գործառույթներ ստեղծելու և զանգահարելու արագ ուղեցույց:

Ֆունկցիան բազմակի օգտագործման կոդի բլոկ է, որն օգտագործվում է ինչ-որ գործողություն կատարելու համար: Գործառույթներով մենք ստանում ենք ավելի լավ մոդուլյարություն և կոդի վերաօգտագործման բարձր աստիճան:

Բաշը տրամադրում է որոշ ներկառուցված գործառույթներ, ինչպիսիք են echo և read, բայց մենք կարող ենք նաև ստեղծել մեր սեփական գործառույթները:




Բաշում ֆունկցիայի ստեղծում

Բաշում գործառույթներ ստեղծելու երկու եղանակ կա.

Մեկ միջոց է պարզապես օգտագործել ֆունկցիայի անունը, օրինակ ՝


functionName(){ // scope of function }

Կոմպակտ տարբերակ.

functionName(){ echo 'hello'; }

Մեկ այլ եղանակ է `գործառույթը հայտարարել` օգտագործելով function հիմնաբառ.

function functionName { // scope of function }

Կոմպակտ տարբերակ.

function functionName { echo 'hello'; }

Ուշադրություն դարձրեք, թե ինչպես մեզ պետք չէ () function - ն օգտագործելիս գործառույթ ստեղծելու համար հիմնաբառ.


Կարևոր կետեր, որոնք պետք է նշել Bash գործառույթների մասին.

  • Գանգուր ամրացումների միջեւ ծածկագիրը {} գործառույթի մարմինն ու շրջանակն է
  • Ֆունկցիա զանգահարելիս մենք պարզապես օգտագործում ենք գործառույթի անունը bash սցենարի ցանկացած կետից
  • Ֆունկցիան պետք է սահմանվի նախքան այն օգտագործելը
  • Կոմպակտ տարբերակն օգտագործելիս վերջին հրամանը պետք է ունենա ստորակետ | ;

Օրինակ:

Հետևյալ կոդը ստեղծում է մի ֆունկցիա, որը տպում է «Բարև աշխարհ» վահանակին: Գործառույթի անունը կոչվում է տպել Ողջույն :

#!/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() չունի որևէ պարամետր: Ytանկացած ժամանակ մենք այն կոչում ենք, մենք ստանում ենք «Բարև աշխարհ» արդյունքը: Բայց ի՞նչ կլինի, եթե մենք ցանկանանք ավելի ընդհանուր ֆունկցիա ստեղծել: Օրինակ, մենք կարող ենք գործառույթը զանգահարել որոշ փաստարկներով և այն կտպագրի այն, ինչ մենք ուղարկում ենք դրան:

Դա անելու երկու եղանակ կա:


Սկզբից մենք կարող ենք փոփոխել 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