8856


Lekcja 10

Programowanie w shellu cz.2

Celem zajęć jest zapoznanie słuchaczy z realizacją komend warunkowych.

  1. Instrukcja warunkowa

Wszystkie języki programowania oferują sposoby podejmowania decyzji, czyli wykonywania kodu programu w zależności od spełnienia określonego warunku. Wszystkie shelle unixa umożliwiają sterowanie wykonaniem kodu poprzez instrukcję IF - THEN - ELSE - FI. Graficznie komendę if można przedstawić następująco:

0x01 graphic

Jeżeli warunek jest spełniony wykonywane jest polecenie1, w przeciwnym przypadku polecenie2. Do zapisu i sprawdzania warunków najczęściej wykorzystuje się poznaną na poprzedniej lekcji komendę test.

Najprostsza postać komendy fi ma następującą składnię:

if warunek

then

lista poleceń

fi

Jeżeli warunek jest prawdą wykonywane są polecenia z listy.

Najczęściej komendę if stosuje się z alternatywną listą poleceń, które są wykonywane w przypadku nie spełnienia podanego warunku. Ta postać komendy if ma następującą składnię:

if warunek

then

lista poleceń 1

else

lista poleceń 2

fi

Jeżeli warunek jest prawdą wykonywane są polecenia z listy1, jeżeli jest fałszem wykonywane są polecenia z listy2.

Najbardziej rozbudowana składnia instrukcji if wygląda następująco:

if warunek 1

then

lista poleceń 1

elif warunek 2

then

lista poleceń 2

else

lista poleceń 3

fi

Jeżeli warunek1 jest prawdą wykonywane są polecenia z listy1, jeżeli jest fałszem sprawdzany jest warunek2. Jeżeli jest on prawdą wykonywane są polecenia z listy2, jeżeli jest fałszem wykonywane są polecenia z listy3.

Komenda if jest przydatna przy podejmowaniu decyzji dwukierunkowych i decyzji zagłębionych do jednego poziomu. Jeżeli sprawdzany warunek może przyjmować wiele wartości sprawdzanie ich komendą if staje się mało czytelne.

2. Instrukcja wyboru

Jeżeli chcemy dać użytkownikowi możliwość wyboru ze zbioru opcji i w zależności od dokonanego wyboru wykonać określone polecenia, to wygodnym sposobem realizacji tego celu daje komenda case. Graficznie komendę case można przedstawić następująco:

0x01 graphic

Jeżeli zmienna przyjmie wartość w1 wówczas wykonywane jest polecenie1, jeżeli przyjmie wartość w2 wykonywane jest poleceni2 itd. Jeżeli zmienna nie przyjmie żadnej z określonych wartości wówczas wykonywane jest polecenie*.

Składnia komendy case wygląda następująco:

case $zmienna in

wartość1)

lista poleceń1;;

wartość2)

lista poleceń2;;

wartość3|wartość4...)

lista poleceń3;;

:

:

*)

lista poleceń*;;

esac

Jeżeli zmienna przyjmie wartość1 wykonane zostaną polecenia z listy1, jeżeli zmienna przyjmie wartość2 zostaną wykonane polecenia z listy2. W przypadku gdy zmienna przyjmie wartość3 lub wartość4 wykonane zostaną polecenia z listy3. Gdy zmienna przyjmie wartość różną od wymienionych (wartość1,2,3,4) wykonane zostaną polecenia z listy*.

3. Zakończenie pracy skryptu

Kiedy skrypt napotka koniec swojego pliku kończy działanie. Do shella zwracany jest kod zakończenia ostatniego wykonanego polecenia. Jeżeli chcemy w sposób jawny przekazać do shella kod powrotu z całego skryptu musimy skorzystać z polecenia exit. Jeżeli skrypt zakończy swą pracę poprawnie wówczas przypisujemy do kodu powrotu wartość zero (exit 0). Jeżeli musimy zakończyć skrypt z powodu błędu wówczas kod powrotu powinien mieć wartość różną od zera, na przykład jeden (exit 1). W ten sposób możemy przekazać informacje na temat zakończenia pracy skryptu i wykorzystać ją w innym skrypcie.

  1. Lista komend

if - instrukcja warunkowa

if warunek 1

then

lista poleceń 1

elif warunek 2

then

lista poleceń 2

else

lista poleceń 3

fi

Jeżeli warunek1 jest prawdą wykonywane są polecenia z listy1, jeżeli jest fałszem sprawdzany jest warunek2. Jeżeli jest on prawdą wykonywane są polecenia z listy2, jeżeli jest fałszem wykonywane są polecenia z listy3. Części elif i case są opcjonalne i nie muszą występować w poleceniu.

case - instrukcja wyboru

case wyrażenie in

wzorzec_1| wzorzec_2...)

lista poleceń1;;

:

:

wzorzec_i|wzorzec_j...)

lista poleceń3;;

*)

lista poleceń*;;

esac

Jeżeli wyrażenie pasuje do wzorca_1 lub wzorca_2 lub innych podanych w tej samej linii, wykonane zostaną polecenia z listy1. Jeżeli wyrażenie nie pasuje do tych wzorców sprawdzane są następne aż do ostatnich wartości wzorzec_i lub wzorzec_j. Gdy wyrażenie przyjmie wartość różną od wymienionych wzorców (1,2...i,j) wykonane zostaną polecenia z listy*.

  1. Ćwiczenia

Nawiąż połączenie z serwerem solaris.wlodkowic.pl i zaloguj się swoim nazwiskiem i hasłem. System powinien wyświetlić znak zgłoszenia shella Korna - $.

Wykonaj zadania z bieżącej lekcji:

  1. Napisz skrypt „wybor”, który umożliwia wykonanie na wybranym pliku trzech operacji: kompresję, wyświetlenie dostępnych informacji oraz skasowanie.

Kolejność poleceń w skrypcie:

1) kompresja pliku

2) wyświetlenie informacji

3) skasowanie pliku

rozwiązanie tylko w wersji on-line

  1. Napisz skrypt „znak”, który sprawdza czy podana przez użytkownika jako parametr wywołania skryptu liczba jest większa, mniejsza czy równa zero.

Kolejność poleceń w skrypcie:

rozwiązanie tylko w wersji on-line



Wyszukiwarka

Podobne podstrony:
8856
8856
8856

więcej podobnych podstron