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