20.Linux для Начинающих - Скрипты Linux Bash, Часть-2
Cuprins:
- Declarația funcției Bash
- Domeniul variabilelor
- Valori de retur
- Trecerea de argumente funcțiilor Bash
- Concluzie
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 scrierea repetată a aceluiași cod.
Comparativ 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 dvs. shell.
Declarația funcției Bash
Sintaxa pentru declararea unei funcții bash este foarte simplă. Acestea pot fi declarate în două formate diferite:
-
Primul format începe cu numele funcției, urmat de paranteze. Acesta este formatul preferat și mai utilizat.
function_name () { commands }Versiune cu o singură linie:
function_name () { commands; }Al doilea format începe cu cuvântul rezervat
functionurmat de numele funcției.function function_name { commands }Versiune cu o singură linie:
function function_name { commands; }
Puține puncte de remarcat:
- Lista de comenzi între bretele cretate
{}este corpul funcției. Bretelele cret care înconjoară corpul funcției trebuie să fie separate de corp prin spații sau linii noi. Definirea unei funcții nu o execută. Pentru a invoca o funcție bash, pur și simplu folosiți numele funcției. Comenzile dintre bretelele cret sunt executate ori de câte ori funcția este apelată în scriptul shell.Definirea funcției trebuie plasată înainte de apelurile către funcție. Când se utilizează funcții „compactate” cu o singură linie, un punct și virgulă;trebuie să urmați ultima comandă din funcție. Trebuie să încercați să mențineți numele funcțiilor descriptive.
Pentru a înțelege mai bine acest lucru, aruncați o privire la următorul exemplu:
~ / Hello_world.sh
#!/bin/bash hello_world () { echo 'hello, world' } hello_world
Să analizăm codul linie după linie:
- În linia
3definim funcția, dându-i un nume și deschizând bretonul ondulat{care marchează începutul corpului funcției. Linia4este corpul funcției. Corpul funcției poate conține mai multe comenzi și declarații variabile. Linia5, parantezahello_world}, definește sfârșitul funcțieihello_worldlinia7executăm funcția. Puteți executa funcția de câte ori aveți nevoie.
Dacă rulați scriptul, acesta va imprima
hello, world
.
Domeniul variabilelor
Variabilele globale sunt variabile care pot fi accesate de oriunde în script, indiferent de sfera de aplicare. În Bash, toate variabilele implicit sunt definite drept globale, chiar dacă sunt declarate în interiorul funcției.
Variabilele locale pot fi declarate în cadrul corpului funcției cu ajutorul cuvântului cheie
local
și pot fi utilizate numai în interiorul acestei funcții. Puteți avea variabile locale cu același nume în funcții diferite.
Pentru a ilustra mai bine cum funcționează domeniul de aplicare al variabilelor în Bash, să luăm în considerare un exemplu:
~ / Variables_scope.sh
#!/bin/bash var1='A' var2='B' my_function () { local var1='C' var2='D' echo "Inside function: var1: $var1, var2: $var2" } echo "Before executing function: var1: $var1, var2: $var2" my_function echo "After executing function: var1: $var1, var2: $var2"
Scriptul începe prin definirea a două variabile globale
var1
și
var2
. Apoi, o funcție care stabilește o variabilă locală
var1
și modifică variabila globală
var2
.
Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D
Din rezultatele de mai sus, putem concluziona că:
- Dacă setați o variabilă locală î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 funcție.
Valori de retur
Spre deosebire de funcțiile din limbajele de programare „reale”, funcțiile Bash nu vă permit să returnați o valoare atunci când sunteți. Când se finalizează o funcție bash, valoarea sa 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 retur poate fi specificată folosind cuvântul cheie
return
și este atribuită variabilei
$?
. Declarația de
return
încheie funcția. Puteți crede că este starea de ieșire a funcției.
#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?
some result 55
Pentru a returna efectiv o valoare arbitrară dintr-o funcție, trebuie să utilizăm alte metode. Cea mai simplă opțiune este de a atribui rezultatul funcției unei variabile globale:
~ / Return_values.sh
#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result
some result
O altă opțiune, mai bună pentru a returna o valoare dintr-o funcție, este de a trimite valoarea pe
stdout
folosind ecou sau
printf
cum este arătat mai jos:
#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result
some result
În loc să executăm pur și simplu funcția care va tipări mesajul pe stdout, atribuim ieșirea funcției la variabila
func_result
folosind substituția comenzii
$()
. Variabila poate fi utilizată ulterior, după cum este necesar.
Trecerea de argumente funcțiilor Bash
Pentru a trece orice număr de argumente la funcția bash pur și simplu puneți-le imediat după numele funcției, despărțite de un spațiu. Este o practică bună să cotați dublu argumentele pentru a evita greșirea unui argument cu spații în el.
- Parametrii trecuți sunt
$1,$2,$3…$n, corespunzând poziției parametrului după numele funcției. Variabila$0este rezervată numelui funcției. Variabila$#deține numărul de parametri / argumente poziționale transmise la funcție. Variabilele$*și$@conțin toți parametrii / argumentele poziționale transmise funcției.- Când este citat dublu,
"$*"se extinde într-un singur șir separat prin spațiu (primul caracter al IFS) -"$1 $2 $n". Când este citat dublu,"$@"se extinde la șiruri separate -"$1" "$2" "$n". Când nu sunt citate dublu,$*și$@sunt la fel.
- Când este citat dublu,
Iată un exemplu:
~ / Passing_arguments.sh
#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"
Concluzie
O funcție Bash este un bloc de cod reutilizabil conceput pentru a efectua o anumită operație. Odată definită, funcția poate fi numită 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ă de scurtătură memorabilă pentru o comandă mai lungă.
terminalul bashPrin colaborarea cu dezvoltatorii, Google poate încerca să împingă mai multe aplicații în netbook-uri, laptop-uri low-cost concepute pentru a rula aplicații de bază pentru surfing Web și e-mail, a declarat David Liu, fondator și președinte al Good OS, la conferința Linuxworld din San Francisco. bazate pe aplicații precum Google Docs și foi de calcul și gadget-uri Google, mini-aplicații care stau pe desktop pentru a efectua funcții desktop reduse. Deși în perioada lor de început, se așteaptă ca e
Google și Good au colaborat la preîncărcarea mini-aplicațiilor Google Gadget pe GOS Gadgets 3, distribuția Linux a lui Good, a spus Liu. Mini-aplicațiile permit utilizatorilor să joace jocuri și să verifice aplicațiile de sistem cum ar fi puterea bateriei și puterea unui semnal de rețea fără fir.
Blinkx oferă funcții de potrivire a imaginii
Blinkx și-a îmbunătățit motorul de căutare video cu funcții de recunoaștere a feței, a oferit motorului său de căutare video capacitatea de a sugera alte clipuri bazate pe ce vizionează o persoană la acea dată.
Blocați funcții specifice android, funcții pentru copii
Aflați cum puteți bloca anumite funcții sau funcții Android înainte de a le oferi copiilor.







