ObservaŃie. În exemplul anterior, nu ştim dacă alte comenzi din interiorul funcŃiei s-au
terminat cu succes sau nu.
Exemplu. Folosirea codului de retur implicit, poate genera efecte necontrolabile.
$ cat > exfunc3
func1() {
ls -l fisinex
echo "Test cu comanda gresita"
}
echo "Testarea functiei:"
func1
echo " Codul de retur este: $?"
$./exfunc3
Testarea functiei:
ls: fisinex : No such file or directory
Test cu comanda gresita
Codul de retur este: 0
Deoarece ultima comandă din interiorul funcŃiei este echo, care se termină cu
succes, codul de ieşire este 0, chiar dacă alte comenzi se execută greşit.
2. Utilizarea comenzii interne return, cu parametru codul de ieşire ce va fi returnat; astfel
se specifică o anumită valoare întregă, ca şi cod de ieşire care poate fi utilizată mai departe în
cadrul scriptului.
Exemplu.
$ cat >exfunc3
function dbl {
read -p "Introduceti o valoare: " val
echo "Se dubleaza valoarea"
return $[ $val * 2 ]
}
dbl
echo "Noua valoare este $?"
$./exfunc3
Introduceti o valoare: 200
Noua valoare este 400
FuncŃia dbl dublează valoarea conŃinută în variabila $val, introdusă de la intrarea
standard şi o returnează prin comanda return, pe care apoi script-ul o afisează
folosind variabila $? .
ObservaŃie. Trebuie ca valoarea returnată, conŃinută în
$? să aibă o valoare numerică mai
mică sau egală cu 256. Valoarea conŃinută în $? se poate pierde, dacă între timp se execută
alte comenzi, care atribuie propriile coduri de retur lui $?. Această metodă nu poate fi folosită
daca se returnează un şir de caractere.
102
3. Utilizarea unei variabile pentru salvarea ieşirii funcŃiei. După corpul funcŃiei, se introduce
o comandă de atribuire, care în membrul drept are numele funcŃiei între apostroafe speciale.
Exemplu.
$cat >exfunc3
function dbl() {
read -p "Introduceti o valoare: " val
echo $[ $value * 2 ]
}
resultat=`dbl`;
echo " Noua valoare este $result"
$./exfunc3
Introduceti o valoare: 200
Noua valoare este 400
Scriptul foloseşte valoarea returnată de funcŃie în comanda echo.
Dostları ilə paylaş: |