5. Programowanie w języku powłoki

Dokument: pdf (189.3 KB)
  • 6 stron
Opublikowany 2017-07-23 02:20:08

08.03.2017, 00*59Systemy Operacyjne - Lekcja 4 - Segment 1 Strona 1 z 6http://oldwww.imio.pw.edu.pl/wwwvlsi/cad/teaching/soe/materialy/LEKCJA4/SEGMENT5/MAIN.HTM5. Programowanie w języku powłoki(5.1) Pętle i polecenia sterujące Zestaw złożonych poleceń powłoki zsh obejmuje większość typowych pętli i poleceń sterujących. Pętla for wykonuje się raz dla każdego słowa z listy. Jeśli lista zostanie pominięta, pętla wykonuje się raz dla każdego ustawionego parametru pozycyjnego. for zmienna [in słowo ...] do lista_poleceń done Pętla for może przyjąć również drugą postać, w której: wyrażenie1 określa warunek początkowy i obliczane jest tylko raz przed pierwszą iteracją pętli, wyrażenie2 pełni rolę warunku zakończenia pętli i obliczane jest na początku każdej iteracji dopóki nie osiągnie wartość zerowej, wyrażenie3 obliczane jest w każdej iteracji pętli po wykonaniu listy poleceń. for ((wyrażenie1; wyrażenie2; wyrażenie3)) do lista_poleceń done Pętla while wykonywana jest dopóki ostatnie polecenie z listy warunków zwraca status zerowy. while lista_warunków do lista_poleceń done Pętla until wykonywana jest dopóki ostatnie polecenie z listy warunków zwraca status niezerowy. until lista_warunków do lista_poleceń done Polecenie case stara się dopasować słowo kolejno do każdego wzorca i wykonuje listę poleceń związaną z pierwszym pasującym wzorcem. case słowo in wzorzec [|wzorzec] ...) lista_poleceń;; ... esac W poleceniu if wykonywana jest gałąź, dla której ostatnie polecenie z listy warunków zwraca status zerowy. if lista_warunków then lista_poleceń [elif lista_warunków 08.03.2017, 00*59Systemy Operacyjne - Lekcja 4 - Segment 1 Strona 2 z 6http://oldwww.imio.pw.edu.pl/wwwvlsi/cad/teaching/soe/materialy/LEKCJA4/SEGMENT5/MAIN.HTM then lista_poleceń] ... [else lista_poleceń] fi Pętle for, while i until mogą być przerywane za pomocą poleceń: break [n] i continue [n] Polecenie break przerywa wykonywanie pętli. Polecenie continue przerywa wykonywanie bieżącej iteracji pętli i wznawia następną iterację. Obydwa polecenia przerywają n poziomów zagnieżdżonych pętli, gdy podany jest argument. Domyślnie przyjmowane jest n=1. Zakończenie działania powłoki umożliwia polecenie: exit [status] Argument oznacza status zakończenia zwracany przez powłokę. Domyślnie zwracany jest status zerowy. (5.2) Sprawdzanie warunków Polecenia sterujące if, while i until wykorzystują jako warunek działania status zakończenia innego polecenia. Może to być dowolne polecenie systemu Linux. Najczęściej najbardziej praktyczne okazuje się klasyczne sprawdzenie jakiegoś warunku np. porównanie dwóch liczb lub ciągów znaków. Takich możliwości dostarcza wbudowany w powłokę mechanizm sprawdzania warunków: [[ warunek ]] oraz polecenie test, które można wywołać na dwa sposoby; test warunek [ warunek ] We wszystkich przypadkach składnia specyfikowania warunku jest podobna. Istnieje możliwość sprawdzania atrybutów plików, porównywania ciągów znaków i liczb całkowitych. Liczby rzeczywiste traktowane są jak ciągi znaków. Testowanie atrybutów pliku wygląda następująco: -r plik - sprawdza, czy użytkownik posiada prawo do czytania, -w plik - sprawdza, czy użytkownik posiada prawo do pisania, -x plik - sprawdza, czy użytkownik posiada prawo do wykonywania, -f plik - sprawdza, czy plik to plik zwykły, -d plik - sprawdza, czy plik to katalog, -c plik - sprawdza, czy plik to plik specjalny znakowy, -b plik - sprawdza, czy plik to plik specjalny blokowy, -p plik - sprawdza, czy plik to plik FIFO, 08.03.2017, 00*59Systemy Operacyjne - Lekcja 4 - Segment 1 Strona 3 z 6http://oldwww.imio.pw.edu.pl/wwwvlsi/cad/teaching/soe/materialy/LEKCJA4/SEGMENT5/MAIN.HTM -s plik - sprawdza, czy plik to plik o niezerowej długości. Przykład Sprawdzanie, czy użytkownik posiada prawo pisania w katalogu dir. if [ -w dir ] then mkdir nowy_katalog fi Testowanie ciągów znaków wygląda następująco: s1 - sprawdza, czy ciąg jest niezerowy, s1 = s2 - sprawdza, czy ciągi są identyczne, s1 != s2 - sprawdza, czy ciągi są różne. Przykład Sprawdzanie, czy bieżącym katalogiem jest katalog domowy użytkownika. if [ $pwd=$HOME ] then mkdir nowy_katalog fi Porównywanie liczb całkowitych umożliwiają operatory: n1 -eq n2 - sprawdza czy n1 = n2, n1 -ne n2 - sprawdza czy n1 >< n2, n1 -gt n2 - sprawdza czy n1 > n2, n1 -ge n2 - sprawdza czy n1 >= n2, n1 -lt n2 - sprawdza czy n1 < n2, n1 -le n2 - sprawdza czy n1 <= n2. Przykład Wypisywanie kolejno argumentów wywołania skryptu. while [ $# -gt 0 ] do echo $1 shift done 08.03.2017, 00*59Systemy Operacyjne - Lekcja 4 - Segment 1 Strona 4 z 6http://oldwww.imio.pw.edu.pl/wwwvlsi/cad/teaching/soe/materialy/LEKCJA4/SEGMENT5/MAIN.HTM Warunki można ze sobą łączyć korzystając z następujących operatorów logicznych: -a - operator AND, -o - operator OR, ( ) - grupowanie warunków. (5.3) Operacje arytmetyczne Niektóre interpretery, jak sh i csh, nie mają wbudowanych żadnych operacji arytmetycznych. Powłoka zsh udostępnia możliwość rozwijania wyrażeń arytmetycznych bezpośrednio...

Komentarze do: 5. Programowanie w języku powłoki • 0