Microsoft Word Modulul3 doc


Manipularea  variabilelor  dintr-o  functie



Yüklə 484,48 Kb.
Pdf görüntüsü
səhifə21/26
tarix31.12.2021
ölçüsü484,48 Kb.
#111572
1   ...   18   19   20   21   22   23   24   25   26
9.Modulul3U2

            Manipularea  variabilelor  dintr-o  functie.  Domeniul  de  vizibilitate  al  variabilelor 

poate  fi  global  sau  local.  Variabilele  globale    sunt  valide  oriunde  în  interiorul  scriptului. 

Deoarece pot exista conflicte la denumirea variabilelor (în mod normal variabilele folosite în 

script  sunt  vizibile  şi  în  funcŃii),  putem  folosi  variabile  care  sunt  vizibile  doar  în  interiorul 

funcŃiei, declarându-le cu local (sau în cazul vectorilor cu local -a).  

Exemplu. Folosirea unei variabile globale pentru a transmite o valoare. 

$cat >exfunc5 

function dbl { 

  val=$[ $val * 2 ] 

read -p "Introduceti o valoare: " val 



dbl 

echo "Noua valoare este: $val" 

$ ./exfunc5 

Introduceti o valoare: 450 

Noua valoare este: 900 

Variabila $val este definită şi asignată în afara funcŃiei. Când este apelată funcŃia 

dbl, variabila  şi valoarea ei sunt încă valide în interiorul funcŃiei. 

ObservaŃie.  Când  variabilei  îi  este  asignată  o  nouă  valoare  în  interiorul  funcŃiei,  acea  nouă 

valoare  este  validă    când  script-ul  referenŃiază  variabila.  Acest  lucru  poate  fi  periculos,  în 

special atunci când o funcŃie este utilizată în diferite  script-uri. 

Exemplu. Utilizarea proastă a variabilelor. 

$cat > exfunc6 

function func1() { 

  temp=$[ $val + 5 ] 

  rezultat=$[ $temp * 2 ] 

temp=4;val=6;func1; 



echo "Rezultatul este $rezultat " 

if [ $temp -gt $val ] 

  then 

  echo "temp este mai mare" 

  else 

  echo "temp este mai mic" 

fi 

$./exfunc6 



Rezultatul este 22 

temp este mai mare 

Se observă că mesajul afişat este greşit (4>6). Cauza este folosirea variabilei 

$temp în cadrul funcŃiei. 

           Aceasta  problemă  este  rezolvată  prin  folosirea  variabilelor  locale.  Variabilele  locale 

pot fi specificate cu declaraŃia local, prezentată anterior. Această declaraŃie poate fi folosită 

şi într-o comandă de asignare. 



 

104 


Exemplu. 

local temp=$[ $val + 5 ] 

 

          Dacă  o  variabilă  locală  este  utilizată  în  afara  funcŃiei,  shell-ul  păstrează  două  valori 



separate ale variabilei. 

Exemplu: 

$cat > exfunc7  

function func1 { 

  local temp=$[ $val + 5 ] 

  rezultat=$[ $temp * 2 ] 

temp=4;value=6;func1;echo"Rezultatul este $rezultat " 



if [ $temp -gt $value ] 

  then 


  echo "temp este mai mare" 

  else 


  echo "temp este mai mic" 

fi 


$ ./exfunc7  

Rezultatul este 22 

temp este mai mic 

Folosirea variabilei $temp în interiorul funcŃiei func1 nu afecteză valoarea 

asignata variabilei $temp în script. 


Yüklə 484,48 Kb.

Dostları ilə paylaş:
1   ...   18   19   20   21   22   23   24   25   26




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin