[Bourne Shell]
[Pagina anterioara] [Pagina de continut] [Pagina urmatoare]

Instructiuni de selectie


Instructiunea if


Sintaxa acestei instructiuni este:
	if <com_test1>
then
<secventa_comenzi1>
else
<secventa_comenzi2>
fi
unde else este optional.
In astfel de situatii este folosita scrierea testarilor folosind notatia cu paranteze drepte in loc de comanda test.

Exemplu
	unitati=0
if [ "$contor" -lt 10 ]
then
unitati=`expr $unitati + 1`
else
unitati=0
zeci=1
fi
Instructiunile if pot fi incuibate, dupa modelul:
	if <com_test1>
then
if <com_test2>
then
<secventa_comenzi1>
fi
else
if <com_test3>
then
<secventa_comenzi2>
fi
fi
O alternativa a constructiei else...if este data de elif:
		if <com_test1>
then
<secventa_comenzi1>
elif<com_test1>
then <secventa_comenzi2>
else <secventa_comenzi3>
fi

Alt exemplu
Fie un shellscript denumit verif_fisier care ia drept argument un nume de fisier si verifica daca este director sau fisier obisnuit:
if [ -f "$1" ] 
then
echo "$1 este fisier obisnuit!"
elif [ -d $1 ]
then echo "$1 este director!"
fi

Instructiunea case


Sintaxa instructiunii case este:
case <valoare> in
sablon_1) <comanda11>
<comanda12>
...
<comanda1n>;;
sablon_2) <comanda21>
<comanda22>
...
<comanda2n>;;
...
sablon_m) <comandam1>
<comandam2>
...
<comandamn>;;
esac
Putem utiliza metacaracterul * pentru a specifica orice sablon, daca nici unul nu a fost adevarat.

Exemplu Presupunem ca avem un program care cere o optiune pentru urmatorul meniu:
Alegeti optiunea dintre variantele:
1...Afisarea unui fisier
2...Stergerea unui fisier
3...Iesire din program
Codul de program pentru citirea optiunii si verificarea acesteia este:
read optiune
case "$optiune" in
1) echo "Introduceti numele fisierului ce va fi afisat: "
read numef
cat "$numef";;
2) echo "Introduceti numele fisierului ce va fi sters: "
read numef
rm "$numef";;
3) exit;;
*) echo "Optiune invalida!";;
esac
Observatie
Daca utilizatorul trebuie sa introduca o litera in locul unei cifre, si dorim sa nu conteze daca litera introdusa este majuscula sau nu, putem sa inlocuim 1) cu a|A) in cazul in care "A" este optiunea pentru afisarea unui fisier, 2) cu s|S) in cazul in care "S" este optiunea pentru stergerea unui fisier si 3) cu i|I) in cazul in care "I" este optiunea pentru iesirea din program.
[Previous page] [Section contents page] [Next page]