Sunteți pe pagina 1din 3

UNIVERSITATEA DUNAREA DE JOS GALATI

SISTEME DE OPERARE IS An II Sem I 2009-2010, PECHEANU

LABORATOR NR. 4 - SISTEME DE OPERARE


TEMA LABORATORULUI
1. Limbajul de programare Shell -instructiuni de control
2. Aplicatii
1. INSTRUCTIUNI DE CONTROL

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

UNIVERSITATEA DUNAREA DE JOS GALATI


SISTEME DE OPERARE IS An II Sem I 2009-2010, PECHEANU
n1 -ne n2
numerele nu sunt egale , etc
Comanda test expr (sau mai simplu [ expr ]), unde expr este o expresie, este foarte des utilizata in
instructiunile de decizie si de ciclare de tip while, until.
Exemplul 1 :
if test -e fifi
if [ $1 = ls ]
then echo Fisi. fifi exista in directorul
then
curent
$1
else echo Fisier negasit
else
fi
echo Ati tastat un sir diferit de
ls
Comanda test -e intoarce 0 daca fisierul
fi
specificat exista si este accesibil la citire si 1
daca fisierul nu exista

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..]

citeste un rind de la intrarea standard; variabila a1 primeste ca


valoarea primului cuvint din linia citita, a2 pe la doilea, etc.
Ultimul argument primeste ca valoare restul liniei citite.

Exemplul 2:
case $1 in
*7)
*15)
*)
esac

echo Ati tastat valoarea 7 ;;


echo Ati tastat valoarea 15 ;;
echo Nici 7, nici 15 ;;

UNIVERSITATEA DUNAREA DE JOS GALATI


SISTEME DE OPERARE IS An II Sem I 2009-2010, PECHEANU
In acest exemplu se alege un caz in functie de valoarea parametrului $1 din linia de comanda a
scriptului.
2. APLICATII
I. Sa se studieze paginile de manual ale comenzilor test, read, expr, shift.
II. Sa se rezolve exercitiile urmatoare:
1. Sa se creeze un script Shell care primeste ca argumente numele unui fisier si valoarea unui sir de
caractere. Sirul de caractere sa se adauge la sfirsitul fisierului. Sa se trateze in script situatiile de eroare
(parametri inexistenti, fisier inexistent).
2. Sa se creeze un script Shell care primeste ca argument un sir de caractere. Sa se afiseze toate
aparitiile acestui sir in fisierele text din directorul curent. Sa se trateze situatiile de eroare (argument
inexistent).
3. Sa se creeze un script Shell numit del care sterge toate fisierele date ca argument in linia de comanda.
Sa se trateze in cadrul script-ului situatiile de eroare.
4. Sa se creeze un script Shell numit type care afiseaza continutul unui fisier al carui nume a fost primit
ca argument in linia de comanda. Sa se analizeze si situatiile de eroare.
5. Sa se creeze un script Shell care sterge un fisier, dupa ce a fost solicitat raspunsul explicit al
utilizatorului (Y sau N).

S-ar putea să vă placă și