singur parametru poate genera eroare. Variabila de mediu $@ conŃine parametrii transmişi,
corespunzători lui $0, $1, $2…. Reamintim că $0 se substituie cu numele funcŃiei. Dacă
încercăm să transmitem un vector ca argument al funcŃiei, funcŃia va prelua numai prima
Pentru a rezolva această problemă, variabiala vector trebuie dezasamblată în
componente şi valorile rezultate să le folosim ca parametri ai funcŃiei. În interiorul funcŃiei,
105
Exemplu.
$cat >exfunc9
function TransCorVect {
local sir1=(`echo "$@"`)
echo "Noul tablou: ${sir1[*]}"
}
Sir2=(1 2 3 4 5)
echo "Tabloul original: ${Sir2[*]}"
TransCorVect ${sir2[*]}
$./exfunc9
Tabloul original: 1 2 3 4 5
Noul tablou: 1 2 3 4 5
Scriptul foloseste variabila Sir2, pe care o transmite funcŃiei şi, în cadrul funcŃiei
se construieşte un nou tablou sir1.
Exemplu: Suma componentelor unui vector.
$cat >exfunc10
function AdunaElemVect {
local suma=0
local sir2
sir2=(`echo "$@"`)
for val in ${sir2[*]}
do
suma=$[ $suma + $val ]
done
echo $suma
}
Sir1=(1 2 3 4 5)
echo "Vectorul original: ${sir1[*]}"
arg1=`echo ${sir1[*]}`
rez=` AdunaElemVect $arg1`
echo "Suma este $rez"
$./exfunc10
Vectorul original: 1 2 3 4 5
Suma este 15
Dostları ilə paylaş: