Administracja sieciowymi systemami operacyjnymi III Klasa - Linux SKRYPTY POWŁOKI mgr inż. Tomasz Borowiec
SKRYPTY POWŁOKI - PODSTAWY W Linuksie skrypt jest plikiem tekstowym zawierającym polecenia systemowe oraz polecenia sterujące przebiegiem wykonania samego skryptu. Skrypty przeznaczone są do wykonania przez powłokę, mają zapewnić automatyzację i systematyczną powtarzalność rutynowych czynności.
SKRYPTY POWŁOKI - PODSTAWY Skrypt tworzymy przez wpisanie poleceń systemowych do pliku tekstowego np. za pomocą edytora vi. Wiersze zaczynające się od znaku # są liniami komentarza, czyli w trakcie wykonywania skryptu będą pomijane przez interpreter.
SKRYPTY POWŁOKI - PODSTAWY Pierwsza linia skryptu zaczyna się ciągiem dwóch znaków #! ścieżka_powłoki i wskazuje na rodzaj powłoki, w jakim ma być uruchamiany skrypt. Najczęściej jest to bash więc linia ta ma postać: #! /bin/bash Jeżeli ścieżka ta jest błędna skrypt nie będzie mógł być uruchomiony.
SKRYPTY POWŁOKI - PODSTAWY Do wyprowadzania tekstu na ekran służy polecenie echo. Polecenie to nie wymaga stosowania znaków cytowania. Cytowania wymaga jednak wyprowadzanie na ekran działania poleceń np.: echo Wynik wynosi: `cat liczba1` `` znak razem z tyldą w lewym górnym rogu klawiatury
SKRYPTY POWŁOKI - PODSTAWY Plik, który ma zostać naszym skryptem musimy uczynić wykonywalnym, czyli nadać mu prawo wykonywania. Następnie należy skopiować go do katalogu dostępnego w ścieżkach przeszukiwania określonych w zmiennej PATH np. katalog /bin, wtedy aby go uruchomić podajemy samą nazwę pliku. Możemy to sprawdzić za pomocą: echo $PATH
SKRYPTY POWŁOKI - PODSTAWY Jeżeli skrypt nie znajduje się w którymś ze wskazanych przez PATH katalogów, to aby go uruchomić należy podać całą ścieżkę. Prawo wykonywania nadajemy poprzez: chmod 755 nazwa_pliku Nadanie prawa możemy sprawdzić: ls l
SKRYPTY POWŁOKI - PODSTAWY Zalogujmy się jako root Utwórzmy w edytorze vi plik o nazwie skrypt o treści: #! /bin/bash # tworzenie folderu mkdir katalog # skopiowanie pliku /etc/passwd do katalogu cp /etc/passwd /root/katalog/plik # zliczenie wierszy w pliku wc l /root/katalog/plik > /root/katalog/liczba # wyswietlenie z pliku liczba wyniku na ekran echo wszystkich wierszy w pliku plik jest: `cat /root/katalog/liczba`
SKRYPTY POWŁOKI - PODSTAWY Nadajemy mu prawa wykonalności poprzez wydanie polecenia: chmod 755 skrypt Skrypt uruchamiamy za pomocą podania ścieżki: /root/skrypt
SKRYPTY POWŁOKI - PODSTAWY Ćwiczenie do wykonania: Napisz skrypt, który utworzy w katalogu domowym root a 5 katalogów, do każdego skopiuje plik, w którym znajduje się zapis zrealizowanego polecenia ls dla /.
SKRYPTY POWŁOKI - PODSTAWY Aby wykonać działanie matematyczne na zmiennych i podstawić jego wynik pod inną zmienną należy użyć zapisu: a=$(($b*4-$c)) Domyślnie, bash nie może wykonywać obliczeń zmiennoprzecinkowych.można to wykonać, za pomocą dodatkowego narzędzia powłoki o nazwie bc (dokładny kalkulator). By używać bc wewnątrz skryptu bash, używa się prostego wybiegu : potokuje wyrażenie w bc. np. a=$(echo $c+$f" bc)
SKRYPTY POWŁOKI - INSTRUKCJE By zobaczyć miejsca po przecinku, należy dopisać scale=liczba przed operacją matematyczną i oddzielić średnikiem ;. np. a=$(echo scale=2;-$b/2 bc) echo poznane wcześniej, read czytanie ze standardowego wejścia, zmienne definiowane przez użytkownika zmienna=wartosc, odwołanie poprzez $zmienna, instrukcja if sprawdza czy warunek jest prawdziwy; jeśli tak to wykonywane jest polecenie znajdujące się po słowie kluczowym then, instrukcja kończy się słowem fi.
SKRYPTY POWŁOKI - INSTRUKCJE Składnia polecenia: if warunek then polecenie1 elif innywarunek then polecenie2 else polecenie3 fi
SKRYPTY POWŁOKI - INSTRUKCJE test sprawdza warunki, Składnia polecenia: test wyrażenie1 operator wyrażenie2 np. test e plik Przykładowy zapis warunku: test_$x_ le_10 _-spacje
SKRYPTY POWŁOKI - INSTRUKCJE Wybrane operatory: -e czy plik istnieje, = czy równość wyrażeń,!= czy różność wyrażeń, -lt czy mniejsze niż, -gt czy większe niż, -ge czy większe lub równe, -le czy mniejsze lub równe.
SKRYPTY POWŁOKI - INSTRUKCJE instrukcja case wybór spośród kilku wzorcowych wartości tej, która pasuje do wyrażenia i wykonanie poleceń przypisanie do wzorca. Składnia polecenia: case zmienna in wzorzec1 ) polecenie1;; wzorzec2 ) polecenie2;; *) polecenie_domyślne esac
SKRYPTY POWŁOKI - INSTRUKCJE Zadanie 1 Napisz skrypt wyliczający pierwiastki równania kwadratowego o współczynnikach a, b, c podawanych z klawiatury (read, echo, if). Zadanie 2 Napisz skrypt, który po wprowadzeniu z klawiatury numeru miesiąca wyświetla jego nazwę (polecenia echo, read, case).
SKRYPTY POWŁOKI - PĘTLE pętla for wykonuje polecenia zawarte wewnątrz, na każdym składniku listy. Składnia polecenia: for zmienna in lista do polecenie done
SKRYPTY POWŁOKI - PĘTLE lista może mieć postać: a) wyliczeniową np.: for d in jeden dwa trzy cztery for d in 1 2 3 4 5 6 7 8 b) zakresową np.: for((a=1;a<10;a++)) brak in
SKRYPTY POWŁOKI - PĘTLE pętla while gdy warunek jest prawdziwy, wykonane zostaną polecenia zawarte wewnątrz. Składnia polecenia: while warunek do polecenie done
SKRYPTY POWŁOKI - PĘTLE pętla until gdy warunek jest fałszywy, wykonane zostaną polecenia zawarte wewnątrz, pętla kończy działanie w momencie gdy warunek stanie się prawdziwy. Składnia polecenia: until warunek do polecenie done
SKRYPTY POWŁOKI - PĘTLE Zadanie 1. Napisz skrypt, który wypisze liczby od 1 do 10, a następnie od 10 do 1 (for). Zadanie 2. Napisz skrypt, który znajdzie najmniejszy wspólny dzielnik dwóch liczb (while).
SKRYPTY POWŁOKI Zadanie Zadanie domowe: Napisz skrypt, który obliczy i wyświetli N! Silnia liczby jest iloczynem wszystkich liczb naturalnych mniejszych od niej lub równych czyli: N!=1*2*...*(N-1)*N