M3.U2.7. Utilizarea funcŃiilor
FuncŃiile se pot declara oriunde în cadrul scriptului. O declaraŃie de funcŃie are sintaxa:
nume_func() { lista_comenzi; }
Apelul funcŃiilor în script se face ca şi în cazul unor comenzi oarecare, eventual cu parametri.
Nu este necesară declararea parametrilor în antetul funcŃiei, deoarece aceştia vor fi identificaŃi
în corpul acesteia (la fel ca în cazul apelului unui script) prin $1, $2, ... Aceste
variabile îşi păstrează valoarea doar în timpul execuŃiei funcŃiei, la revenire fiind restaurate
valorile lor iniŃiale.
Functiile pot avea oricâŃi parametri, pot fi recursive şi imbricate (se pot defini in
interiorul altor funcŃii) şi sunt apelabile de oriunde; ele pot fi apelate numai după ce
interpretorul le-a întâlnit definiŃia în cursul execuŃiei scriptului. De asemenea, este necesară
unicitatea numelui din interiorul script-ului.
Exemplu. Crearea şi executarea unui script care declară şi apelează o funcŃie.
$cat >exfunc1
function func1 {echo “Exemplu de functie"}
cont=1
while [ $cont -le 3 ]
do
func1;
cont=$[ $cont + 1 ]
done
echo “Sfirsitul ciclarii"
func1
echo “Sfirsitul script-ului"
$./exfunc1
Exemplu de functie
Exemplu de functie
Exemplu de functie
Sfirsitul ciclarii
Sfirsitul script-ului
Interpretorul bash tratează funcŃiile ca şi “mini-scripturi”, adică după execuŃie returnează un
cod (stare) de ieşire. Există trei moduri diferite prin care se poate genera un cod de ieşire
dintr-o funcŃie.
1. O funcŃie se poate termina după execuŃia ultimei comenzi (şi întoarce codul de ieşire al
acesteia).
Exemplu.
$ cat > exfunc2
func1() {
echo "Incercare de afis.a inf. despre un fis. ne-exis."
ls -l fisinex}
101
echo "Testarea functiei:"
func1
echo "Codul de iesire: $?"
$./exfunc1
Testarea functiei:
Incercare de afis.a inf. despre un fis. ne-exis.
ls: fisinex: No such file or directory
The exit status is:1
Codul de ieşire al funcŃiei este 1, deoarece ultima comandă din interiorul funcŃiei,
s-a executat fără succes.
Dostları ilə paylaş: |