Bash Scripting – Funcții
Un script Bash este un fișier text simplu. Acest fișier conține diferite comenzi pentru execuția pas cu pas. Aceste comenzi pot fi scrise direct în linia de comandă, dar dintr-o percepție a reutilizabilității este util să stocați toate comenzile interdependente pentru o anumită sarcină într-un singur fișier. Putem folosi acel fișier pentru a executa setul de comenzi o dată sau de mai multe ori, conform cerințelor noastre.
Aici, în acest articol, vom discuta despre utilizarea funcțiilor din Bash Scripting.
În programare, O funcție este un bloc de cod care îndeplinește anumite sarcini și poate fi apelată de mai multe ori pentru realizarea sarcinilor. Oferă modularitate în program și reduce lungimea codului. Cel mai simplu exemplu de utilizare a funcției în scriptingul Bash poate fi dat ca:
Exemplu de script:
#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction Ieșire:
Hello World from techcodeview.com
Exemplul de mai sus arată o funcție care imprimă ceva atunci când este apelată. Deci, sintaxa de bază pentru scrierea funcțiilor într-un Script Bash va fi
Sintaxă:
# for defining function_name(){ commands ..... } function_name # for calling Pe lângă aceasta, putem avea și funcții cu argumente de trecere și cu valori returnate. Acum să le discutăm.
Funcții cu argumente de trecere
Putem adăuga argumente sau parametri unei funcții și transmite date folosindu-le funcției, astfel încât funcția să poată acționa cu acele date. În scripting-ul bash, putem folosi următoarea sintaxă pentru a scrie o funcție cu argumente de trecere.
Sintaxa funcțiilor cu argumente de trecere:
#for defining function_name(){ ..... parameter_1 = $1 parameter_2 = $2 . . . parameter_n = $n .... commands ..... } #for calling function_name p1 p2 ....pn Putem transmite direct argumentele în timp ce apelăm funcția și le putem accesa cu 1 dolari, 2 dolari….. n. dolari în cadrul funcției. Să vedem un exemplu pentru o înțelegere mai clară a acestuia.
Exemplu de funcții cu argumente de trecere:
#!/bin/bash add_two_num(){ local sum=$(($1+$2)) echo sum of $1 and $2 is $sum } add_two_num 2 3 Ieșirea funcțiilor cu argumente de trecere:
sum of 2 and 3 is 5
Mai sus este un script pentru adăugarea a două numere. Aici am oferit 2 și 3 ca argumente. Le-am accesat folosind $1 și $2 din funcție și le-am calculat suma și am imprimat-o pe terminal. Mai jos este reprezentarea shell-ului terminalului după executarea scriptului -
Funcții cu valori returnate
O valoare returnată este produsă și returnată metodei de apelare de către o funcție după ce își încheie execuția. O valoare returnată poate fi folosită pentru a partaja rezultatul produs sau un cod de stare despre dacă o funcție a fost executată cu succes sau nu. În scriptingul Bash, valoarea returnată este atribuită lui $? variabil.
Un exemplu de același lucru este dat mai jos -
Exemplu de funcții cu valori returnate:
#!/bin/bash myfun(){ return 7 } myfun echo The return value is $? Ieșirea funcțiilor cu valori returnate:
The return value is 7
Mai jos este rezultatul shell-ului terminalului după executarea scriptului -
Acum, să modificăm suma anterioară a scriptului cu două numere.
Cod modificat:
#!/bin/bash myfun(){ return $(($1+$2)) } add_two_num 2 3 echo The sum is $? Ieșirea codului modificat:
The sum is 5
Acum, codul de mai sus este un exemplu de utilizare a ambilor parametri și a valorii returnate într-o funcție de script Bash.
Mai jos este reprezentarea shell-ului terminalului după executarea scriptului -
Domeniu variabil
Domeniul de aplicare într-un program sau script este o regiune în care variabilele își au existența. Dacă o variabilă, este declarată în interiorul unei funcții, atunci este în general o variabilă locală, iar dacă este declarată în afara, atunci este o variabilă globală. În cazul unui script bash, acest concept este puțin diferit, aici orice variabilă, indiferent dacă este scrisă în interiorul unei funcții sau în afara unei funcții implicit, este o variabilă globală. Dacă vrem să facem o variabilă locală, atunci trebuie să folosim cuvântul cheie local.
Este cea mai bună practică să folosiți întotdeauna o variabilă locală în interiorul unei funcții pentru a evita orice confuzie inutilă.
Un exemplu de același lucru este dat mai jos -
Exemplu de domeniu variabil:
#!/bin/bash var1='Apple' #global variable myfun(){ local var2='Banana' #local variable var3='Cherry' #global variable echo 'The name of first fruit is $var1' echo 'The name of second fruit is $var2' } myfun #calling function echo 'The name of first fruit is $var1' #trying to access local variable echo 'The name of second fruit is $var2' echo 'The name of third fruit is $var3' Ieșirea domeniului variabil:
The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry
Aici, în acest exemplu de mai sus, var2 este o variabilă locală, așa că atunci când o accesăm din funcție merge bine, dar când încercăm să o accesăm în afara funcției, ne dă un rezultat gol în ieșire.
Pe de altă parte, spre deosebire de limbajele de programare, chiar dacă var3 este definit în interiorul unei funcții, totuși acționează ca o variabilă globală și poate fi accesată în afara funcției. Mai jos este reprezentarea shell-ului terminalului după executarea scriptului -
Comenzi de suprascrie
Este posibil să existe o funcție cu același nume cu cel al unei comenzi. Este util dacă vrem să rulăm o comandă cu opțiuni specifice sau vrem să avem o ediție personalizată a acesteia.
Un exemplu de același lucru este dat mai jos -
Exemplu de comenzi de suprascriere:
#!/bin/bash #overriding command echo(){ builtin echo 'The name is : $1' } echo 'Satyajit Ghosh' Ieșirea comenzilor de suprascriere:
The name is : Satyajit Ghosh
Aici, în acest exemplu, am suprascris ecou comanda. Acum, înainte de a imprima șirul dat, acesta adaugă șirul cu mai multe cuvinte și apoi se tipărește. Mai jos este reprezentarea shell-ului terminalului după executarea scriptului -