logo

Bash Scripting - Funcions

Un script Bash és un fitxer de text senzill. Aquest fitxer conté diferents ordres per a l'execució pas a pas. Aquestes ordres es poden escriure directament a la línia d'ordres, però des d'una perspectiva de reutilització és útil emmagatzemar totes les ordres interrelacionades per a una tasca específica en un sol fitxer. Podem utilitzar aquest fitxer per executar el conjunt d'ordres una o més vegades segons els nostres requisits.

Aquí, en aquest article, parlarem de l'ús de funcions dins de Bash Scripting.



En programació, una funció és un bloc de codi que realitza algunes tasques i es pot cridar diverses vegades per realitzar tasques. Proporciona modularitat al programa i redueix la longitud del codi. L'exemple més senzill de l'ús de la funció en els scripts de Bash es pot donar com a:

Exemple de script:

#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction>

Sortida:



Hello World from techcodeview.com>

L'exemple anterior mostra una funció que imprimeix alguna cosa quan es crida. Per tant, la sintaxi bàsica per escriure funcions dins d'un script Bash serà

sistema operatiu

Sintaxi:

# for defining function_name(){ commands ..... } function_name # for calling>

A més d'això, també podem tenir funcions amb arguments de pas i amb valors de retorn. Ara parlem-ne.



Funcions amb arguments de pas

Podem afegir arguments o paràmetres a una funció i passar dades utilitzant-les a la funció perquè la funció pugui actuar amb aquestes dades. En els scripts bash, podem utilitzar la sintaxi següent per escriure una funció amb arguments de pas.

Sintaxi de funcions amb arguments de pas:

#for defining function_name(){ ..... parameter_1 =  parameter_2 =  . . . parameter_n = $n .... commands ..... } #for calling function_name p1 p2 ....pn>

Podem passar directament els arguments mentre cridem la funció i hi podem accedir 1 $, 2 $... $n dins de la funció. Vegem-ne un exemple per a una comprensió més clara.

Exemple de funcions amb arguments de pas:

#!/bin/bash add_two_num(){ local sum=$((+)) echo sum of  and  is $sum } add_two_num 2 3>

Sortida de funcions amb arguments de pas:

sum of 2 and 3 is 5>

A dalt hi ha un script per sumar dos nombres. Aquí hem proporcionat el 2 i el 3 com a arguments. Hem accedit a ells utilitzant i des de la funció i hem calculat la seva suma i l'hem imprès al terminal. A continuació es mostra la representació de l'intèrpret d'ordres del terminal després d'executar l'script:

Sortida de funcions amb arguments de pas

Funcions amb valors de retorn

Un valor de retorn es produeix i es retorna al mètode de crida per una funció després de completar la seva execució. Es pot utilitzar un valor de retorn per compartir el resultat produït o algun codi d'estat sobre si una funció s'ha executat correctament o no. En els scripts de Bash, el valor de retorn s'assigna a $? variable.

A continuació es presenta un exemple del mateix:

Exemple de funcions amb valors de retorn:

#!/bin/bash myfun(){ return 7 } myfun echo The return value is $?>

Sortida de funcions amb valors de retorn:

The return value is 7>

A continuació es mostra la sortida de l'intèrpret d'ordres del terminal després d'executar l'script:

Sortida de funcions amb valors de retorn

Ara, modifiquem la suma anterior de l'script de dos números.

Codi modificat:

ipconfig gratuït
#!/bin/bash myfun(){ return $((+)) } add_two_num 2 3 echo The sum is $?>

Sortida del codi modificat:

The sum is 5>

Ara el codi anterior és un exemple d'ús dels dos paràmetres i el valor de retorn en una funció d'script Bash.

A continuació es mostra la representació de l'intèrpret d'ordres del terminal després d'executar l'script:

Sortida del codi modificat

Àmbit variable

L'abast d'un programa o script és una regió on les variables tenen la seva existència. Si una variable, es declara dins d'una funció, generalment és una variable local i si es declara fora, és una variable global. En el cas d'un script bash, aquest concepte és una mica diferent, aquí qualsevol variable, tant si està escrita dins d'una funció com fora d'una funció per defecte, és una variable global. Si volem fer una variable local, hem d'utilitzar la paraula clau local.

La millor pràctica és utilitzar sempre una variable local dins d'una funció per evitar qualsevol confusió innecessària.

A continuació es presenta un exemple del mateix:

Exemple d'abast variable:

#!/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'>

Sortida d'abast variable:

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>

Aquí, en aquest exemple anterior, var2 és una variable local, de manera que quan hi accedim des de la funció està bé, però quan estem intentant accedir-hi fora de la funció, ens està donant un resultat buit a la sortida.

D'altra banda, a diferència dels llenguatges de programació, tot i que var3 es defineix dins d'una funció encara actua com una variable global i s'hi pot accedir fora de la funció. A continuació es mostra la representació de l'intèrpret d'ordres del terminal després d'executar l'script:

Sortida d'abast variable

Comandes anul·lades

És possible tenir una funció amb el mateix nom que el d'una ordre. És útil si volem executar una comanda amb opcions específiques o volem tenir-ne una edició personalitzada.

A continuació es presenta un exemple del mateix:

Exemple d'ordres anul·lades:

#!/bin/bash #overriding command echo(){ builtin echo 'The name is : ' } echo 'Satyajit Ghosh'>

Sortida d'ordres anul·lades:

conversió de tipus java i càsting
The name is : Satyajit Ghosh>

Aquí, en aquest exemple, hem substituït el eco comandament. Ara, abans d'imprimir la cadena donada, afegeix la cadena amb algunes paraules més i després s'imprimeix. A continuació es mostra la representació de l'intèrpret d'ordres del terminal després d'executar l'script:

Sortida d'ordres d'anul·lació