Documente Academic
Documente Profesional
Documente Cultură
4 Laborator 4 SO
4 Laborator 4 SO
1.1. DECIZIA
Limbajul de programare Shell implementeaza decizia si selectia si ca urmare ramificarea programului
in functie de anumite conditii. Pentru instructiunea de decizie sintaxa este urmatoarea:
if <lista-1>
if <lista-1>
then
then
<lista-2>
(1)
<lista-2>
(2)
else
elif <lista-3>
then
<lista-3>
<lista-4>
fi
else
<lista-5>
fi
Cuvintele if, then, else, elif, fi sunt cuvinte cheie care marcheaza elementele structurii. In varianta (1) se
executa lista de comenzi <lista-1> iar daca codul de retur este 0 (comanda reusita, adica adevarat), se va
executa lista de comenzi <lista-2>. Daca codul de retur este diferit de 0 (comanda nereusita, adica fals),
se va executa lista de comenzi <lista-3>. In varianta (2), daca <lista-1> intoarce codul de retur 0, se va
executa <lista-2>, altfel se executa <lista-3> si daca codul de retur este 0 se executa <lista-4>, altfel se
executa <lista-5>.
In conditia instructiunii de decizie se foloseste adesea comanda interna test expr, care are urmatoarea
sintaxa generala:
test expr
evalueaza expresia conditionala expr. Se permite si forma [ expr ], fara cuvintul
cheie test.
Intr-o expresie acceptata de comanda test pot apare urmatoarele :
-e nume_fis
fisierul nume_fis exista in directorul curent
-r nume_fis
fisierul nume_fis exista si are drept de citire
-x nume_fis
fisierul nume_fis exista si are drept de executie
-w nume_fis
fisierul nume_fis exista si are drept de scriere
-f nume_fis
fisier obisnuit
(Daca nume_fis este un sir vid comanda test intoarce adevarat !)
-z sir
lungimea sirului este 0
-n sir
lungimea sirului nu este 0
sir
sirul nu este vid
sir1 = sir2
sirurile sunt egale
sir1 != sir2
sirurile nu sunt egale, etc
n1 -eq n2
numerele sunt egale
1.2. SELECTIA
Instructiunea de selectie are urmatoarea sintaxa
case <sir> in
<sablon-1> <lista-1> ;;
<sablon-2> <lista-2> ;;
........................
esac
la executia instructiunii se verifica daca <sir> este identic cu unul din sabloanele <sablon-i> si in caz
afirmativ se executa lista de comenzi <lista-i>.
Exemplu:
echo -e Introduceti D sau N: \c
read raspuns rest
case $raspuns in
[Dd]*)
echo Ati raspuns Da ;;
[Nn]*)
echo Ati raspuns Nu ;;
*)
echo Nici Da nici Nu ;;
esac
In acest exemplu s-a folosit comanda interna read care are urmatoarea sintaxa:
read a1 [a2..]
Exemplul 2:
case $1 in
*7)
*15)
*)
esac