Unix lab 10


MATERIAAY DO ĆWICZEC LABORATORYJNYCH
(10)
Przetwarzanie wsadowe (skrypty)
Przetwarzanie wsadowe polega sekwencyjnym wykonywaniu poleceń UNIXa zapisanych w
pliku tekstowym.
Wykonanie poleceń zapisanych w pliku wsadowym (uruchomienie skryptu) odbywa się
następującymi metodami:
1) csh nazwa_pliku -wywołanie nowej powłoki C i wykonanie przez nią poleceń
zapisanych w pliku
2) source nazwa_pliku - wykonanie poleceń zapisanych w pliku przez aktualną
powłokę C
3) nazwa_pliku -wywołanie pliku wsadowego tak jak każdego innego programu
(tzn. przez jego nazwę). Plik wsadowy stanie się plikiem
wykonywalnym (skryptem, programem), jeśli zostaną mu
przyznane prawa wykonywania (x) np.
chmod u+x nazwa_pliku
Skrypt może być wywoływany z parametrami. Parametry skryptu są zapamiętane w zmiennej
argv. W treści skryptu, można odwoływać się do zmiennej argv.
$argv[n] lub $n -n-ty parametr
$argv[*] lub $* -wszystkie parametry
$#argv -liczba parametrów
$0 -nazwa pliku (skryptu)
Utworzyć skrypt o nazwie lsp, wywoływany z jednym parametrem, którym będzie nazwa
pliku. Zadaniem skryptu będzie:
" sprawdzenie czy plik istnieje i wyświetlenie odpowiedniego komunikatu
" wyświetlenie informacji o podanym pliku (za pomocą polecenia ls -l)
Za pomocą edytora vi, napisać w pliku lsp
#!/bin/csh
treść skryptu. Pierwszym znakiem w pliku
# Informacje o pliku
musi być symbol #. Po nim następuje
wykrzyknik i nazwa pliku z programem
if ($#argv == 1) goto par
powłoki. Każda powłoka przeczyta ten
echo Nalezy podac jeden
wiersz i uruchomi odpowiednią powłokę
parametr
do wykonania poleceń.
exit # wyjscie z programu
W drugim wierszu  po znaku # 
par:
umieszczono komentarz.
if (-e $1) goto ist W trzecim wierszu  warunkowo 
zostanie wykonana instrukcja skoku goto,
echo Plik $1 nie istnieje
która spowoduje przejście w pliku
exit
wsadowym do miejsca oznaczonego
podaną nazwą (tu: par).
ist:
W pierwszej instrukcji if, następuje
ls -l $1
zbadanie, czy przy wywołaniu skryptu
podano tylko jeden parametr. Jeśli liczba
parametrów nie jest równa 1  następuje
wypisanie odpowiedniego komunikatu
i wyjście z programu (exit).
W drugiej instrukcji if, następuje
zbadanie, czy podany plik istnieje.
Utworzyć skrypt o nazwie kom, który:
" wypisze napis UWAGA
" wyświetli aktualną datę i czas
" wypisze komunikat  Za 10 minut nastąpi wyłączenie stacji
#!/bin/csh
Za pomocą edytora vi, napisać w pliku kom treść
skryptu.
banner uwaga
date
echo  Za 10 minut nastapi
wylaczenie stacji
chmod u+x kom
Nadanie plikowi kom prawa wykonywania
i uruchomienie skryptu.
kom
Utworzyć skrypt o nazwie fp, który:
" wyświetli zawartość plików o nazwach podanych przy wywołaniu skryptu (dowolna
liczba plików) za pomocą polecenia cat, przy czym zawartość każdego pliku zostanie
poprzedzona nazwą pliku.
Przykład wywołania: fp test1 test1.0 te4
#!/bin/csh
Sprawdzić działanie skryptu wywołując go
foreach plik ($*) dla różnej liczby plików
echo  ===========
echo  == $plik ==
cat $plik | more
end
Utworzyć skrypt o nazwie komn, który:
" wyświetli komunikat podaną liczbę razy.
Przykład wywołania: komn 8
#!/bin/csh
Sprawdzić działanie skryptu wywołując go
set n=1 dla różnej liczby n
while ($n <= $1)
echo $n komunikat
@ n++
end
Zastosowanie instrukcji wyboru switch
switch (test)
Instrukcja wyboru.
case wzorzec:
Wykonana zostanie grupa poleceń w bloku
grupa_poleceń
case, dla którego wzorzec pasuje do ciągu
breaksw
znaków określonych przez test. Instrukcja
.........
case wzorzec: breaksw powoduje skok na koniec instrukcji
grupa_poleceń switch (endsw)
breaksw
Zazwyczaj bloków case jest kilka.
endsw
Utworzyć skrypt o nazwie stolica, który:
" wypisze stolicę państwa podanego jako parametr wywołania skryptu
Przykład wywołania: stolica Czechy odpowiedz: Praga
#!/bin/csh
if ($#argv != 1) then
echo Należy podac tylko jeden parametr  panstwo
exit
endif
switch ($1)
case Czechy
echo Praga
breaksw
case Polska
echo Warszawa
breaksw
case Francja
echo Paryz
breaksw
default: # blok, definiujacy polecenia które sa
wykonywane, gdy testowanie parametru będzie
niepomyslne
echo Nie ma takiego panstwa
breaksw
endsw
Interakcyjne wprowadzanie danych przez użytkownika. Symbol $<
Utworzyć skrypt o nazwie witaj, który:
" poprosi o wpisanie imienia z klawiatury i wypisze powitanie
#!/bin/csh
echo -n  Podaj swoje imie: 
Po wypisaniu prośby o imię, program czeka
set s=$<
na wpisanie tekstu z klawiatury.
echo Witaj $s !
Dane z klawiatury, użytkownik może wprowadzać również wykorzystując polecenia, które
czytają dane ze swojego standardowego wejścia, jak w przykładzie poniżej. Napisać
i przetestować poniższy skrypt o nazwie test
#!/bin/csh
echo  Czy Wenus jest wieksza od Ziemi ? [t/n] Zamiast symboli $<
można użyć polecenia
set pr=`head -1`
head, które czyta
dane ze standardo
if ( $pr =~ [Nn]* ) then
wego wejścia (czyli
echo OK
z klawiatury).
Przy użyciu polecenia
else
head, znaki wprowa
echo  zle !
dzane przez użytkow
nika z klawiatury są
endif
również wyświetlane
na ekranie, podczas
gdy w przypadku
symboli $<  nie.
Zastosowanie polecenia shift.
Polecenie shift usuwa pierwszy element listy podanej jako parametr. Jeśli jest użyte bez
parametru, wtedy działa na zmiennej argv (lista parametrów skryptu).
Utworzyć skrypt o nazwie lis.
#!/bin/csh
Warunek badany w poleceniu while
set k = ( kot koza kuna kangur )
określony jest w postaci liczby
while ( $#k )
elementów listy k. Warunek ten
przyjmie wartość logiczną false, gdy
echo $k
lista k stanie się pusta.
shift k
Polecenie shift zmniejsza liczbę
end
elementów listy k o 1 po każdym
jednokrotnym wykonaniu pętli.
Zastosowanie polecenia break.
Polecenie break powoduje opuszczenie pętli (np. while) i przejście do wiersza za słowem end
#!/bin/csh
Utworzyć skrypt o nazwie brk
while ( 1 > 0 )
set u=$<
if ( $u == q ) break
end
echo koniec petli
Skrypt może wywoływać inny skrypt.
s1
Utworzyć dwa skrypty s1 i s2, przy czym
skrypt s2 wywołuje skrypt s1
#!/bin/csh
echo  11111
s2
#!/bin/csh
echo  22222
s1
Diagnostyka  wykrywanie błędów w skryptach, na przykład błędów składni.
#!/bin/csh
Napisać prosty skrypt o nazwie info.
echo Witaj $LOGNAME
echo Dzis jest `date`
echo Twoja powloka jest $SHELL
Pierwszy sposób usuwania błędów w skryptach polega na uruchomieniu procesu powłoki csh
z odpowiednią opcją
csh -x info
Nastąpi wyświetlenie każdej linii
skryptu po podstawieniu wartości
zmiennych, ale przed wykonaniem
csh -v info
Nastąpi wyświetlenie każdej linii
skryptu przed jej wykonaniem (tak jak
została napisana)
csh -n info
Nastąpi zinterpretowanie linii skryptu,
bez ich wykonania
Drugi sposób usuwania błędów w skryptach polega na ustawieniu zmiennej echo lub verbose
set echo
Nastąpi wyświetlenie każdej linii
skryptu po podstawieniu wartości
zmiennych, ale przed wykonaniem
set verbose
Nastąpi wyświetlenie każdej linii
skryptu przed jej wykonaniem (tak jak
została napisana)
#!/bin/csh
Przez zdefiniowanie zmiennej echo (lub
echo Witaj $LOGNAME verbose) w odpowiednim miejscu
skryptu i pózniej usunięcie tej definicji,
echo Dzis jest `date`
można sprawdzać działanie określonych
set echo
fragmentów skryptu.
echo Twoja powloka jest $SHELL
unset echo
Trzeci sposób usuwania błędów w skryptach polega na użyciu odpowiednich opcji wywołania
procesu powłoki w pierwszym wierszu skryptu.
#!/bin/csh -xv
Nastąpi wykonanie skryptu dla
...... ustawionych zmiennych echo i verbose.
Wykorzystanie przetwarzania wsadowego do automatyzacji pracy z programami
Sprawdzić, czy istnieje, lub utworzyć plik o nazwie lista, zawierający w kolejnych wierszach
nazwiska i imiona (ok. 10 wierszy).
Zadanie:
Za pomocą edytora vi, dopisać w wierszu 4-ym nazwisko i imię: Nowak Piotr. Zadanie to
wykonać, wpisując z klawiatury poniższe polecenia
cp lista lista1 Zmiany wykonamy na kopii pliku lista
vi +3 lista1 Otwarcie edytora vi z plikiem lista1 i ustawienie kursora
w 3-cim wierszu.
o Utworzenie pustego wiersza poniżej wiersza z kursorem
i wejście w tryb wprowadzania.
Nowak Piotr Wpisanie tekstu.
ESC Wejście w tryb poleceń.
:wq Zapis wprowadzonych zmian w pliku i wyjście z edytora.
Utworzymy skrypt o nazwie vilist, który wykona powyższe zadanie w sposób automatyczny,
tzn. wykona to, co użytkownik normalnie wykonuje w interaktywnym trybie pracy z edytorem
vi. Podobnie można zautomatyzować czynności z innymi programami interaktywnymi.
Skrypt vilist korzysta z pliku ster, który zawiera polecenia i znaki, które użytkownik
wprowadziłby aby wykonać to zadanie w trybie interaktywnym.
Plik ster utworzymy edytorem vi, albo za pomocą polecenia cat
cat > ster
oNowak Piotr:wq
Ctrl+D
cat ster
cat > vilist
Tworzymy teraz plik wsadowy vilist, który
#! /usr/bin/csh
wykona opisane zadanie
vi +3 lista < ster
Ctrl+D
chmod u+x vilist Plikowi vilist nadajemy prawa wykonywania
vilist
Sprawdzamy działanie skryptu
cat lista lub vi lista


Wyszukiwarka

Podobne podstrony:
Unix lab 9
Lab 10 SO
Unix lab 7
IE RS lab 10 diagram
lab 10
Unix lab 3
LAB 10 INF Ĺšrodowisko programowania QT student
Unix lab 4
IE RS lab 10 overview
Unix lab 1
Układy Logiczne Lab 10 12
Unix lab 5
PA lab [10] rozdział
IE RS lab 10 solutions
Unix lab 8
PO lab 10
5 3 1 10 Lab Użycie IOS CLI do badania tablicy adresów MAC przełącznika
Lab UNIX files and directories management
Lab ME SPS instrukcja 10 11

więcej podobnych podstron