Celem poniższej listy zadań jest zapoznanie się z mechanizmami shella uniksowego (Bourne shella) takimi jak: zmienne, operacje na wektorze argumentów, wyrażenia warunkowe i pętle.
Poniższe skrypty powinny być uruchomione przy użyciu shella i narzędzi na systemie Unix (Solaris - diablo). Jeśli nie potrafisz napisać rozwiązania poprawnego na Uniksie, i udało Ci się jedynie uruchomić swoje rozwiązanie pod Linuksem - zaznacz to w raporcie. Takie rozwiązanie będzie akceptowane, choć w niektórych przypadkach może być niżej ocenione.
Przejrzyj w notatkach z wykładu część dotyczącą tworzenia prostych skryptów
(policz
), a także odwołania się do argumentów wywołania. Następnie
sprawdź postać wywołania instrukcji warunkowej if
, oraz pętli while
.
Na podstawie przykładów i dokumentacji napisz wyrażenie test
sprawdzające
wartość pierwszego argumentu wywołania skryptu.
Zwróć uwagę na zadania poniżej oznaczone do wykonania "na zajęciach".
Postaraj się dobrze zrozumieć te zadania i przygotować się do ich sprawnego
wykonania. Opracowując rozwiązania, postaraj się używać tylko programów
wymienionych w zadaniu, i konstrukcji shella. W szczególności, nie używaj
programów: grep
, sed
, awk
, tr
.
Z wyjątkiem, gdy zadanie jawnie tego wymaga, opracowane skrypty nie powinny nawiązywać dialogu z użytkownikiem, pytać o wartości argumentów, potwierdzenia, itp.
Zad.1. (1 punkt - na zajęciach)
Napisz skrypt policz
, podobny do prezentowanego na wykładzie, który
policzy i wyświetli liczbę plików w katalogu bieżącym. WSKAZÓWKA: opcja
-1 do programu ls
powoduje wyświetlanie po jednym pliku w linijce, a program
wc
można wywołać z opcją -l
powodującą policzenie tylko liczby linijek.
Zad.2. (1 punkt - na zajęciach)
Napisz skrypt policz2
o działaniu takim jak policz
z poprzedniego
zadania, z dodatkowym użyciem argumentu opcjonalnego -a
, podobnie jak
program ls
. To znaczy, z argumentem -a
skrypt obliczy liczbę
wszystkich plików w katalogu bieżącym, włącznie z plikami "ukrytymi" (o
nazwach zaczynających się od kropki), a bez -a
pominie te pliki.
Zad.3. (1 punkt - na zajęciach)
Wykorzystując instrukcję pętli logicznej while
Bourne shella napisz
skrypt, który poleceniem date
będzie wyświetlał w kółko aktualną godzinę,
co określony czas (przyjmijmy co 5 sekund), na przemian z czyszczeniem
ekranu poleceniem clear
. Aby zapewnić powtarzanie operacji co określony
czas, po wyświetleniu czasu należy wywołać polecenie sleep 5
.
Zad.4. (2 punkty - na zajęciach, lub 1 punkt - w domu)
Wykorzystując instrukcję warunkową if
Bourne shella rozszerz skrypt z
poprzedniego zadania tak, by można było zadać argumentem wywołania inny
niż 5 sekund okres wyświetlania czasu. Jeśli użytkownik nie poda
parametru, to skrypt powtarza wyświetlanie domyślnie co 5 sekund.
Zad.5. (1 punkt - w domu)
Wykorzystując instrukcję warunkową if
Bourne shella napisz skrypt
witaj
do wyświetlania programem echo
różnych komunikatów powitalnych
w zależności czy aktualnie jest dzień roboczy czy świąteczny (dla
uproszczenia, dzień tygodnia czy weekend).
WSKAZÓWKA: program date
wyświetla informacje o bieżącej dacie. Domyślnie
jest to pełny zapis daty zgodny z konwencjami bieżącej lokalizacji. Zwykle
będzie to być język polski, ale jeśli uruchomimy date
w innej lokalizacji
to wyświetli się inny komunikat. Do sprawdzania dnia tygodnia przydatna
będzie forma wywołania date
która wyświetli tylko dzień tygodnia w postaci
numerycznej.
WSKAZÓWKA 2: wynik działania polecenia date
można przechwycić w skrypcie za
pomocą podstawienia pod zmienną wyniku działania polecenia zagnieżdżonego, i
następnie porównać z wartością oczekiwaną.
W raporcie z wykonania zadania proszę wkleić TYLKO skrypty opracowane do punktów 4 i 5. Nie załączaj tych skryptów jako oddzielnych plików. Raport może zawierać dodatkowe uwagi, wnioski, itp. w razie potrzeby, ale skrypty powinny być wklejone precyzyjnie, aby można było je skopiować i wykonać. Jeśli wydaje się to sensowne, skrypt może też zawierać komentarz(e).