[Bourne Shell]
[Pagina anterioara] [Pagina continut] [Pagina urmatoare]

Functii


Functii in Shell


Ca si in limbajul C, avem posibilitatea si in Bourne Shell sa folosim functii definite de utilizator pentru a conferi modularitate programelor. De asemenea, functiile se apeleaza mai rapid decat ar fi apelate alte shell script-uri. La apelul unui alt shell script, shell-ul trebuie sa caute pe harddisk programul si sa-l deschida inainte de a fi citit, situatie in care se creeaza un nou proces; acest lucru nu se intampla in cazul apelului unei functii. 
O functie definita intr-un shell script exista doar in cadrul procesului respectiv si nu poate fi exportata. 
Formatul general al declararii unei functii este: 
        nume()
        {
        <secventa_de_comenzi>
        }
        
Parantezele rotunde ce urmeaza dupa numele functiei specifica interpretorului de comenzi ca este vorba despre o functie.
Observatie
Spre deosebire de limbajul C, parantezele ce urmeaza dupa numele functiei nu au niciodata continut. 
Apelul functiei se face prin numele ei, ca o comanda obisnuita; de aceea, numele functiilor nu trebuie sa coincida cu numele comenzilor Unix sau ale comenzilor Shell. O functie poate accesa variabilele setate pentru shell-ul curent (atat cele stabilite la inceputul procesului de login cat si cele ce se modifica pe parcurs). De regula, functiile se scriu la inceputul shell script-ului; in caz contrar, codul functiei trebuie sa preceada apelul sau.

Exemple de functii in Shell


  1. Fie functia: 
  2.         go()
            {
            cd $1
            PS1="`pwd`>"
            }
            go $1
            
    Daca numele shell script-ului este gofunc, atunci el poate fi apelat in modul urmator:
            $gofunc /home/i97aaa
            
    iar rezultatul apelului va fi schimbarea directorului curent in /home/i97aaa si schimbarea primului prompter in "/home/i97aaa>".
[Pagina anterioara][Pagina continut] [Pagina urmatoare]