lab5


SYSTEMY OPERACYJNE

Sprawozdanie z ćwiczeń laboratoryjnych nr 5, 6

Prowadzący: dr hab. inż. Antoni Donigiewicz

Wykonał: Szymon Puacz I6Y2S1

Data: 07.04.2008, 14.04.2008

Ćw.1

Napisz polecenie, które wyświetli, w ilu plikach znajdujących się w twoim katalogu domowym, których nazwa kończy się na `la', znajduje się wiersz `ala'.

rozw.:

grep -l `ala' *la |wc -l

Ćw. 2

Napisz polecenie, ile jest wierszy postaci `123' w plikach o nazwach rozpoczynających się na `numery'.

rozw.:

grep -n `123' numery* |wc -l

Ćwiczenia dotyczyły skryptów w systemie UNIX. Skrypt tworzymy wprowadzając kod do pliku (np. poprzez cat > nazwa_pliku).

Pierwszy skrypt:

echo ''Argument z dolar1”

echo ''$1”

echo ''Argument z dolar3”

echo ''$3”

echo ''Nazwa skryptu: $0”

echo ''Wszystkie argumenty: $@”

Skrypt wywołuje się za pomocą komendy:

./nazwa 77 ala ola

Jednak po wywołaniu otrzymuję komunikat: ''Access denied”, co oznacza, że użytkownik nie ma prawa do wykonywania nowoutworzonego pliku. Aby to zmienić, należy dodać nowe prawo dostępu: chmod u+x nazwa.

Działanie skryptu:

Uruchamiam skrypt razem z argumentami: „77 ala ola”. Po uruchomieniu programu zostaje wyświetlone:

Argument z dolar1

77

Argument z dolar3

ala

Nazwa skryptu: ./nazwa

Wszystkie argumenty: 77 ala ola

$1 w skrypcie oznacza, że wywołujemy pierwszy argument, itd., każdy następny numer wywołuje następny argument. $0 wywołuje jako argument nazwę pliku.

Instrukcje warunkowe

Pierwszy typ instrukcji warunkowej ma postać:

if test polecenia

then

…. polecenia …

fi

To znaczy, że jeśli test jest spełniony, polecenia po then zostaną wykonane. fi oznacza koniec instrukcji warunkowej.

Przykład:

echo ''Instrukcja warunkowa typ1”

echo ''Podaj liczbe”

read a1

if test $a1 -gt 20

then

echo ''liczba $a1 jest wieksza niz 20”

fi

echo ''KONIEC”

Po uruchomieniu podajemy jako argument liczbę i program sprawdza w instrukcji warunkowej, czy jest ona większa od 20, jeśli tak, wypisuje dalszą część tekstu.

Drugi typ:

if test polecenia

then

…. polecenia ….

else

…. polecenia…

fi

Traktujemy ten typ jako zwykłą insrukcję if - else. Jeśli pierwszy warunek nie jest spełniony, wykonuje się warunek poprzedzony else .

Przykład:

echo ''Instrukcja warunkowa typ2”

echo ''Podaj liczbe”

read a1

if test $a1 -gt 20

then

echo ''liczba $a1 jest wieksza niz 20”

else

echo ''liczba $a1 jest mniejsza lub rowna 20”

fi

echo ''KONIEC”

Program podobny do poprzedniego, z tym, że jeśli warunek nie jest spełniony, dostaniemy komunikat „Liczba jest mniejsza lub równa”.

Trzeci typ:

if test polecenia

then

…. Polecenie1….

elif test

then

…..polecenie2…..

else

……polecenie3…..

fi

Kolejny typ wyrażenia warunkowego, tylko, że w tym można podać kilka warunków. elif to odpowiednik else if w języku C.

Przykład:

echo ''Instrukcja warunkowa typ3”

echo ''Podaj liczbe”

read a1

if test $a1 -gt 20

then

echo ''liczba $a1 jest wieksza niz 20”

elif

echo ''liczba $a1 jest mniejsza od 20”

else

echo ''liczba $a1 jest rowna 20”

fi

echo ''KONIEC”

Rozważamy ten sam typ programu, tym razem sprawdza on dodatkowy warunek, tzn. czy liczba jest mniejsza (-lt 20) od 20.

Pętle

Typ1:

for nazwa in wyrażenie

do

…..polecenia…..

done

Przykład:

echo ''Wypisywanie argumentow w petli”

for ZM in $@

do

echo ''wartosc arg: $ZM”

done

uruchomienie skryptu: ./nazwa_pliku ola 7 22 44

Działanie:

Wypisywanie argumentow w petli

Wartość arg: ola

Wartość arg: 7

Wartość arg: 22

Wartość arg: 44

Program wypisuje wszystkie wartości, nazwy, które są podawane przy uruchomieniu jako argumenty. done oznacza koniec pętli.

Typ2:

for (wyrazenie1; wyrazenie2; wyrazenie3)

do

…….polecenia……..

done

Ta wersja pętli najbardziej przypomina pętlę `for', którą znamy z języka C. Polecenia są wykonywane dla wyrażeń warunkowych przy `for'.

Ćw. 3

Napisać skrypt, który wyświetli, ile razy w skryptach wystąpiło słowo kluczowe `echo'.

Rozw.:

echo ''Ilosc wystapien slowa echo:”

grep -n `echo' * |wc -l

LAB.6

Ćw. 1

Mamy dane pliki o nazwach:

Skrypt1.skr

Skrypt2.skr

Skrypt3.skr

Skrypt4.skr

Napisać skrypt, który zmieni nazwy plików w ten sposób, że nie będą miały one rozszerzenia.

Rozw.:

rename .skr `' skrypt*.skr

Zmieniam nazwy plików tych plików, których nazwa rozpoczyna się od skrypt.

pętla while

while warunek

do

……instrukcje……..

done

Przykład

zm = '' ''

while [''$zm'' != koniec]

do

echo -n ''Wpisz slowo `koniec' aby zakończyć:''

read zm

echo ''Wpisales `$zm' ''

done

Program wykonuje się w pętli, dopóki nie zostanie wprowadzony tekst `koniec'.

Instrukcja wyboru `case'

Case ZMIENNA in

wartość1)

polecenie1

polecenie2

;;

wartość2)

polecenie3

polecenie4

;;

*)

polecenie5

polecenie6

;;

esac

Instrukcje `case' dają wygodny sposób dokonywania rozgałęzienia na wiele ścieżek przy porównaniu jednego wprowadzanego wzorca z wieloma alternatywami.

Wnioski

Pisanie programów za pomocą skryptów w systemie UNIX jest bardzo podobne do pisania w języku C. Skrypt można zapisać w pliku i otworzyć go później jako program. Wymaga to jednak zmiany prawa dostępu do pliku, gdyż domyślnie przy tworzeniu pliku użytkownik nie ma prawa execute.

6



Wyszukiwarka

Podobne podstrony:
lab5 prezentacja
C lab5
lab5 Proxy
ZG lab5 6 id 589867 Nieznany
ZwUE lab5
Lab5 Analiza sygnalu mowy Lab5 Nieznany
Podstawy Robotyki lab5
Architekrura SystemAlw Lab5 (1) Nieznany
Lab5
Lab5, poch1
lab5
SI2 lab5 raport
Lab5
[LAB5]Tutorial do kartkówki
pme lab5
Lab5 Modelowanie dynamiki id 25 Nieznany
Lab5 OZE id 259971 Nieznany
Lab5 7 id 259904 Nieznany
lab5
Lab5 KWW TOPCAM

więcej podobnych podstron