programare schell

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> then <lista-2> (1) else <lista-3> fi if <lista-1> then <lista-2> (2) elif <lista-3> then <lista-4> 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

Upload: alina-iftimiu

Post on 04-Dec-2015

4 views

Category:

Documents


2 download

DESCRIPTION

sa va fie de folos

TRANSCRIPT

Page 1: programare Schell

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> then <lista-2> (1) else <lista-3> fi

if <lista-1> then <lista-2> (2) elif <lista-3> then <lista-4> 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

Page 2: programare Schell

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 then echo “Fisi. fifi exista in directorul curent” else echo “Fisier negasit” fi Comanda test -e intoarce 0 daca fisierul specificat exista si este accesibil la citire si 1 daca fisierul nu exista

if [ “$1” = “ls” ] then $1 else echo “Ati tastat un sir diferit de ls” fi

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) echo “Ati tastat valoarea 7” ;; *15) echo “Ati tastat valoarea 15” ;; *) echo “Nici 7, nici 15” ;; esac

Page 3: programare Schell

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