Functii recursive. Bash admite recursivitatea funcŃiilor, într-un mod similar
limbajelor de programare evaluate.
Exemplu: Factorialul unui numar.
$ cat >exfunc11
function factorial {
if [ $1 -eq 1 ]
then
echo 1
else
local temp=$[ $1 - 1 ]
local rez=`factorial $temp`
echo $[ $rez * $1 ]
fi
}
read -p "Introduceti un numar: " n
rez=`factorial $n`
echo "Factorial lui $n: $rez“
$ ./exfunc11
Introduceti un numar: 5
Factorial lui 5: 120
Să ne reamintim...
FuncŃiile se pot declara oriunde în cadrul scriptului. 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 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 ş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.
1. În cadrul unui script, scrieŃi o funcŃie care să detemine suma componentelor unui
vector cu componente numerice; în cadrul scriptului iniŃializaŃi vectorul, apeleŃi
funcŃia şi apoi afişaŃi valoarea sumei.
2. În cadrul unui script, scrieŃi o funcŃie care să detemine nerecursiv factorialul unui
număr; în cadrul scriptului citiŃi numărul, apeleŃi funcŃia şi apoi afişaŃi valoarea
factorialului.
|