Articles

Funcții Bash

Posted by admin

o funcție Bash este în esență un set de comenzi care pot fi numite de mai multe ori. Scopul unei funcții este de a vă ajuta să faceți scripturile bash mai lizibile și să evitați să scrieți același cod în mod repetat. În comparație cu majoritatea limbajelor de programare, funcțiile Bash sunt oarecum limitate.

în acest tutorial, vom acoperi elementele de bază ale funcțiilor Bash și vă vom arăta cum să le utilizați în scripturile shell.

definirea funcțiilor Bash #

sintaxa pentru declararea unei funcții bash este simplă., Funcțiile pot fi declarate în două formate diferite:

  1. primul format începe cu numele funcției, urmat de paranteze. Acesta este formatul preferat și mai utilizat.

    function_name () { commands}

    Singură linie versiune:

    function_name () { commands; }
  2. Al doilea format începe cu cuvântul rezervat function, urmat de numele funcției.,

    function function_name { commands}

    Singură linie versiune:

    function function_name { commands; }

Câteva puncte pentru a fi remarcat:

  • comenzile între acolade ({}) sunt numite corpul funcției. Bretelele ondulate trebuie separate de corp prin spații sau linii noi.
  • definirea unei funcții nu o execută. Pentru a invoca o funcție bash, utilizați pur și simplu numele funcției. Comenzile dintre bretelele ondulate sunt executate ori de câte ori funcția este apelată în scriptul shell.,
  • definiția funcției trebuie plasată înainte de orice apel către funcție.
  • când utilizați funcții „compactate” cu o singură linie, un punct și virgulă ; trebuie să urmeze ultima comandă din funcție.
  • încercați întotdeauna să păstrați numele funcțiilor dvs. descriptive.

Pentru a înțelege mai bine acest lucru, să ia o privire la următorul exemplu:

~/hello_world.sh
#!/bin/bashhello_world () { echo 'hello, world'}hello_world

Să analizăm codul linie cu linie:

  • În linia 3, ne definim funcția, dându-i un nume., Breteaua ondulată { marchează începutul corpului funcției.
  • linia 4 este corpul funcției. Corpul funcției poate conține mai multe comenzi, declarații și declarații variabile.
  • Linie 5, închide acolada }, definește sfârșitul hello_world function.
  • în linie 7 executăm funcția. Puteți executa funcția de câte ori aveți nevoie.,

dacă rulați scriptul, acesta va imprima hello, world.variabilele globale sunt variabile care pot fi accesate de oriunde în script, indiferent de domeniul de aplicare. În Bash, toate variabilele în mod implicit sunt definite ca fiind globale, chiar dacă sunt declarate în interiorul funcției.

variabilele locale pot fi declarate în corpul funcției cu cuvântul cheielocal și pot fi utilizate numai în interiorul acelei funcții. Puteți avea variabile locale cu același nume în diferite funcții.,

Pentru a ilustra mai bine cum variabile domeniul de aplicare funcționează în Bash, să ia în considerare acest exemplu:

~/variables_scope.sh

script-ul începe prin definirea a două variabile globale var1 și var2. Atunci există o funcție care stabilește o variabilă locală var1 și modifică variabila globală var2.,dacă rulați scriptul, ar trebui să vedeți următoarea ieșire:

Before executing function: var1: A, var2: BInside function: var1: C, var2: DAfter executing function: var1: A, var2: D

Din ieșirea de mai sus, putem concluziona că:

  • când o variabilă locală este setată în interiorul corpului funcției cu același nume ca o variabilă globală existentă, aceasta va avea prioritate față de variabila globală.
  • variabilele globale pot fi modificate din interiorul funcției.

returnează valori #

spre deosebire de funcțiile din limbajele de programare „reale”, funcțiile Bash nu vă permit să returnați o valoare atunci când sunt apelate., Când o funcție bash se termină, valoarea returnată este starea ultimei instrucțiuni executate în funcție, 0 pentru succes și număr zecimal non-zero în intervalul 1 – 255 pentru eșec.

starea de returnare poate fi specificată utilizând cuvântul cheie returnși este atribuită variabilei $?. Declarația return termină funcția. Vă puteți gândi la aceasta ca la starea de ieșire a funcției .

~ / return_values.,sh
#!/bin/bashmy_function () { echo "some result" return 55}my_functionecho $?
some result55

Pentru a returna o valoare arbitrară dintr-o funcție, trebuie să utilizați alte metode. Cea mai simplă opțiune este de a atribui rezultatul funcției de o variabilă globală:

~/return_values.sh
#!/bin/bashmy_function () { func_result="some result"}my_functionecho $func_result
some result

Alt, mai bună opțiune pentru a returna o valoare dintr-o funcție este de a trimite valoarea sa stdout folosind echo sau printf așa cum se arată mai jos:

~/return_values.,sh
#!/bin/bashmy_function () { local func_result="some result" echo "$func_result"}func_result="$(my_function)"echo $func_result
some result

în Loc de pur și simplu executarea funcție care va tipări mesajul la stdout, suntem atribuirea funcției de ieșire la func_result variabilei $() comanda de substituție. Variabila poate fi utilizată ulterior după cum este necesar.

trecerea argumentelor la funcțiile Bash #

pentru a transmite orice număr de argumente funcției bash pur și simplu puneți-le imediat după numele funcției, separate de un spațiu., Este o bună practică să citezi dublu argumentele pentru a evita interpretarea greșită a unui argument cu spații în el.

Aici este un exemplu:

~/passing_arguments.sh
#!/bin/bashgreeting () { echo "Hello $1"}greeting "Joe"
Hello Joe

Concluzie #

Un Bash functie este un bloc de cod reutilizabil conceput pentru a efectua o anumită operațiune. Odată definită, funcția poate fi apelată de mai multe ori într-un script.

De asemenea, poate doriți să citiți despre cum să utilizați o funcție Bash pentru a crea o comandă rapidă memorabilă pentru o comandă mai lungă.

Leave A Comment