Systemy operacyjne materiaªy ¢wiczeniowe
Studia dzienne PJWSTK
WICZENIA V
Skrypty c.d.
• wczytanie warto±ci zmiennych ze standardowego wej±cia read <nazwa zmiennej>
• funkcje (shell Bash)
function <nazwa funkcji> ( ) {
<ci¡g instrukcji>;
}
• wywoªanie funkcji (mo»liwo±¢ stosowania wywoªa« rekurencyjnych)
<nazwa funkcji> <argument 1> <argument 2> ...
• dost¦p do argumentów wywoªania wewn¡trz funkcji $0 nazwa funkcji
$# liczba argumentów wywoªania funkcji
$1, $2, $3 ... argumenty funkcji
$* rozwijane do postaci $1 $2 $3 ...
$@ rozwijane do postaci $1 $2 $3 ...
$? kod powrotu ostatnio wykonanego polecenia
• przekazanie kodu powrotu z funkcji do skryptu, przerwanie dziaªania funkcji return <kod wyj±cia>
• przekazanie kodu powrotu z funkcji do skrpytu, przerwanie dziaªania funkcji i skryptu exit <kod wyj±cia>
• usuwanie nazw zmiennych
unset <nazwa zmiennej>
• usuwanie nazw funkcji
unset -f <nazwa funkcji>
• wstawki w tek±cie skryptu (przekazanie na standardowe wej±cie znaków od tego miejsca do miejsca wyst¡pienia <ogranicznika>)
<nazwa miejsca docelowego> < < <ogranicznik>
<tre±¢ wstawki>
<ogranicznik>
np.
cat > > tmp < < EXIT
123EXITcattmp;
1
c
° Paweª Rembelski
Systemy operacyjne materiaªy ¢wiczeniowe
Studia dzienne PJWSTK
Zadania
1. Napisz skrypt, który rekurencyjnie wyznaczy n-t¡ liczb¦ Fibonacciego, gdzie n jest argumentem wywoªania skryptu.
2. Napisz skrypt, ktory ze standardowego wej±cia pobiera n liczb naturalnych i 1 , i 2 , . . . , in i w rezultacie zwraca liczb¦ ij tak¡, »¦ ∀ 1 ≤ k ≤ n [ ij ≥ ik]. Zakªadamy, »e liczba n nie jest znana oraz »e
∀ 1 ≤ k ≤ n [ ik > 0].
3. Napisz skrypt, który wyliczy warto±¢ wyra»enia arytmetycznego zdeniowanego w li±cie argumentów wywoªania (nie uwzgl¦dniamy priorytetów dziaªa« arytmetycznych). Dopuszczalne operacje arytmetyczne to: dodawanie, odejmowanie, mno»enie, dzielenie caªkowitoliczbowe, dzielenie mo-dulo.
4. Napisz skrypt, który dla ka»dego pliku w aktualnym katalogu sprawdzi, czy rozmiar tego pliku jest liczb¡ pierwsz¡ (je»eli nie to poda dowolny jego dzielnik). Przed testem dla dowolnego pliku ma pyta¢ (t,n,w,q), gdzie t przeprowadzenie testu, n brak testu, w przeprowadzenie testu na wszystkich kolejnych plikach ª¡cznie z aktualnym bez dalszego pytania, q przerwanie dziaªania.
5. Napisz skrypt, który wypisze rekurencyjnie listing aktualnego katalogu (brak parametru -s) b¡d¹
listnig katalogu podanego po parametrze -s. Opcja -d ustala gª¦boko±¢ zej±cia rekurencyjnego.
Nazwy katalogów maj¡ by¢ poprzedzone znakiem + a plików znakiem -. Zawarto±¢ katalogu na poziomie i-tym powinna by¢ poprzedzona i znakami odst¦pu.
2
c
° Paweª Rembelski