Microsoft Word Modulul3 doc


M3.U2.5. Structura alternativă case



Yüklə 484,48 Kb.
Pdf görüntüsü
səhifə11/26
tarix31.12.2021
ölçüsü484,48 Kb.
#111572
1   ...   7   8   9   10   11   12   13   14   ...   26
9.Modulul3U2

M3.U2.5. Structura alternativă case  

Structura alternativă case are sintaxa: 

                   case $var in 

list_valori1 ) actiune1;; 

list_valori2 ) actiune2;; 

... 


* ) actiune_implicita;; 

                    esac 




 

94 


              Valoarea variabilei var (discriminant pentru case) se compară pe rând cu valorile 

specificate  în  list_valori1,  list_valori2  etc.  În  momentul  identificării  unei 

corespondenŃe,  se  execută  acŃiunea  asociată  şi  execuŃia  lui  case  se  termină.  Dacă  valoarea 

variabilei  nu  corespunde  cu  nici  o  valoare  din  liste,  se  execută  acŃiunea  asociată  lui  * 

(acŃiunea implicită), care se află pe ultima poziŃie. Valorile specificate într-o listă de valori se 

separă prin | şi pot fi exprimate şi ca expresii regulate. 



Exemplu. Testarea existenŃei de fişiere şi adăugare la sfârşitul unui fişier. 

  case $# in 

  1) if [ -w $1]  

  then cat >> $1;; 

  2) if [ \( -w $2 \) -a \( -r $2 \)]  

  then cat >> $2 <$1;; 

  *) echo Fisier inexistent;; 

  esac 


Dacă există un singur parametru, conŃinutul fişierului standard de intrare se adaugă 

la  sfârşitul  fişierului  al  cărui  nume  este  dat  prin  acest  parametru.  Pentru  doi 

parametri în linia de comandă, conŃinutul fişierului indicat de primul parametru este 

adăugat la sfârşitul fişierului indicat prin al doilea parametru. Pentru alte situaŃii se 

emite un mesaj de utilizare.  

Exemplu. Următorul script: 

  case $LOGNAME in 

  root) PS1="#";; 

  ilflorea | i.florea ) PS1="utiliz priv $LOGNAME $";; 

  * ) PS1="User obisnuit \h:\w\$ ";;  

  esac 


  export PS1 

  readonly PS1 

$LOGNAME  conŃine  numele  ultimului  utilizator  care  s-a  conectat  la  sistem. 

Utilizatorii ilflorea şi i.florea au un prompter diferit de cel al utilizatorilor 

obişnuiŃi. 

Exemplu. O generalizare a comenzii 

cal. Comanda cal primeşte ca parametri anul 

sau luna în formă numerică şi afişează calendarul lunii/anului respectiv/e. În cele ce 

urmează,  este  prezentat  un  script    care  extinde  comanda  cal,  în  sensul  că 

argumentele comenzii pot fi date şi în alte formate. Dacă numele cu care este salvat 

scriptul este calendar, poate fi lansat: 

$./calendar ianuarie 2010 

$./calendar febr 

$./calendar Decem 2010  

ConŃinutul scriptului este: 

case $# in  

0) set `date`; m=$2;y=$6 ;; #cazul fara arg. 

1) m=$1;set `date`;y =$6 ;;#luna este sing. arg. 

2) m=$1; y =$2 ;; #se specif. luna si anul 

esac 

Case $m in  



  Ian*|ian*|Jan*|jan* ) m=1 ;; 

  Feb*|feb*|Fev*|fev* ) m=2 ;; 

  Mar*|mar* m=3 ;; 

  Apr*|apr*|Avr*|avr* ) m=4 ;; 

  Mai|mai ) m=5 ;; 



 

95 


  Iun*|iun*|Jun*|jun* ) m=6 ;;  

  Iul*|iul*|Jul*|jul* ) m=7 ;; 

  Aug*|aug*|Avg*|avg* ) m=8 ;; 

  Sep*|sep*|Sec*|sec* ) m=9 ;; 

  Oct*|oct* ) m=10 ;; 

  Noi*|noi*|Nov*|nov* ) m=11 ;; 

  Dec*|dec* ) m=12 ;; 

  [1-9]|10|11|12) ;; #Luna se specif. num 

  *) m=“” ;; anul se specif. explicit. 

esac 


/usr/bin/cal $m $y #apel cal 

 

 




Yüklə 484,48 Kb.

Dostları ilə paylaş:
1   ...   7   8   9   10   11   12   13   14   ...   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