Systemy operacyjne 11

Podobne dokumenty
12. Skrypty w Linux - funkcje, instrukcje sterujące i obliczenia arytmetyczne

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

System operacyjny Linux

Technologie Informacyjne - Linux 3

Systemy operacyjne. Programowanie w shellu: BASH. Wydział Inżynierii Metali i Informatyki Przemysłowej

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Programowanie w BASH u Skrypt do ćwiczeń

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Programowanie skryptów powłoki

Pracownia Komputerowa wykład III

Skrypty powłoki w systemie Linux

1 Podstawy c++ w pigułce.

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

PODSTAWY INFORMATYKI

Wprowadzenie do programowania w powłoce

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Środowisko programisty Zestaw 7

Kurs pisania skryptów w powłoce BASH

Instrukcja SO powłoka BASH i skrypty powłoki Istotne jest zrozumienie działania narzędzia history powłoki BASH. Każde polecenie wprowadzone i

- wszystkie elementy - wszystkie elementy

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Pętla for. Wynik działania programu:

Podstawy Programowania Podstawowa składnia języka C++

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

1 Podstawy c++ w pigułce.

Bash - wprowadzenie. Bash - wprowadzenie 1/39

1 Przygotował: mgr inż. Maciej Lasota

Interpreter poleceń oraz zmienne środowiskowe

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Programowanie w języku Python. Grażyna Koba

Zapis algorytmów: schematy blokowe i pseudokod 1

Laboratorium Ubuntu Linux.

Programowanie w Turbo Pascal

K. Konopko; Skrypty powłoki. Skrypty powłoki. dr inż. Krzysztof Konopko

skrypt powłoki to plik tekstowy, rozpoczynający się sekwencją: pierwsza linia określa powłokę, w której wykonywany jest skrypt; druga to komentarz

Powłoka (shell) Powłoka ksh

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Instrukcje sterujące

SSK - Techniki Internetowe

Wprowadzenie do Scilab: podstawy języka Scilab

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

Podstawy JavaScript ćwiczenia

Bash - instrukcje warunkowe, pętle i funkcje

Powłoka bash. Kurs systemu Unix 1

LibreOffice Calc VBA

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Wstęp do Informatyki dla bioinformatyków

Język C, instrukcje sterujące (laboratorium)

Podstawy Programowania C++

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

do instrukcja while(wyrażenie);

Pętle. Dodał Administrator niedziela, 14 marzec :27

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; }

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Bloki anonimowe w PL/SQL

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

2.5 Podstawy programowania w bash'u

Ćwiczenie: JavaScript Cookies (3x45 minut)

Zmienne środowiskowe: Ścieżka przeszukiwana komendą.

Ćwiczenie nr 14: System Linux

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

Programowanie w języku C++ Grażyna Koba

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Podstawy programowania skrót z wykładów:

Podstawy programowania skryptów Sh

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Instrukcje cykliczne (pętle) WHILE...END WHILE

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Tworzenie skryptu: Skrypty powłoki

Przykład 1 -->s="hello World!" s = Hello World! -->disp(s) Hello World!

Podstawowe elementy programowania strukturalnego. Wbudowane typy danych w C++

JAVAScript w dokumentach HTML - przypomnienie

Kompilator języka Basic można bezpłatnie pobrać ze strony z zakładki DOWNLOAD.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Konstrukcje warunkowe Pętle

Umieszczanie kodu. kod skryptu

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Liczby losowe i pętla while w języku Python

Każde wykonanie bloku instrukcji nazywamy pojedynczym przebiegiem lub iteracją pętli.

Blockly Kodowanie pomoc.

Cw.12 JAVAScript w dokumentach HTML

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wprowadzenie do programowania w języku C

Pascal - wprowadzenie

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

WHILE (wyrażenie) instrukcja;

Wprowadzenie do programowania shella (bash)

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Java Podstawy. Michał Bereta

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

1 Powtórzenie wiadomości

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

Transkrypt:

Systemy operacyjne 11 Z Wikipedii, wolnej encyklopedii. Spis treści 1 Warunki w instrukcjach sterujących 2 Instrukcje sterujące 2.1 Instrukcja warunkowa if 2.2 Instrukcja case 2.3 Pętla for 2.4 Pętla select 2.5 Pętla while 2.6 Pętla until 3 Modykowanie działania instrukcji sterujących 3.1 Break 3.2 Continue 4 Funkcje 5 Zadania Warunki w instrukcjach sterujących Podstawą większości instrukcji sterujących jest sprawdzanie jakiegoś warunku. Do sprawdzania warunków służy polecenie test. (Należy zatem pamiętać, aby nie nadawać skryptom nazwy test!). test wyrażenie1 operator wyrażenie2 # a=1 # test $a eq 1 0 # a=5 # test $a eq 1 1 Polecenie test zwraca wartość 0 (true), jeśli warunek jest spełniony lub wartość 1 (false) w przeciwnym wypadku (inaczej niż w przypadku expr!). Wartość zwracana umieszczana jest w zmiennej specjalnej $? Poniżej wyszczególniono kilka przykławych operatorów polecenia test: a b plik istnieje plik istnieje i jest blokowym plikiem specjalnym http://wiki.kis.p.lodz.pl/lab/index.php/systemy_operacyjne_11 1/10

plik istnieje i jest plikiem znakowym e plik istnieje h plik istnieje i jest linkiem symbolicznym = sprawdza czy wyrażenia są równe!= sprawdza czy wyrażenia są różne n wyrażenie ma długość większą niż 0 d wyrażenie istnieje i jest katalogiem z wyrażenie ma zerową długość r można czytać plik w można zapisywać pliku x można plik wykonać f plik istnieje i jest plikiem zwykłym p plik jest łączem nazwanym N plik istnieje i był zmieniany od czasu jego ostatniego odczytu plik1 nt plik2 plik1 jest nowszy od pliku2 plik1 ot plik2 plik1 jest starszy od pliku2 lt mniejsze niż gt większe niż ge większe lub równe le mniejsze lub równe Aby poprawić czytelność zapisu w instrukcjach sterujących stępny jest alternatywny sposób zapisu: [ wyrażenie1 operator wyrażenie2 ] Uwaga: W przypadku tego drugiego zapisu (z którego korzystaliśmy we wcześniejszych przykładach) należy pamiętać o pojedynczych spacjach pomiędzy nawiasami, a treścią warunku. # a=1 # [ $a eq 1 ] 0 # a=5 # [ $a eq 1 ] 1 http://wiki.kis.p.lodz.pl/lab/index.php/systemy_operacyjne_11 2/10

Powłoka bash ustępnia także zapis warunku zgodny ze składnią języka C. Ma on następującą podać: ((warunek_c)) # a=1 # ((($a==1) ($a==3))) 0 # a=3 # ((($a==1) ($a==3))) 0 # a=5 # ((($a==1) ($a==3))) 1 Instrukcje sterujące Instrukcja warunkowa if Instrukcja if sprawdza czy warunek jest prawdziwy, jeśli tak to wykonane zostanie polecenie lub polecenia znajdujące się po słowie kluczowym then. Instrukcja kończy się słowem. if warunek then polecenie if [ e ~/.bashrc ] then echo "Masz plik.bashrc" Uwaga: Wszystkie instrukcję sterujące powinny być zapisywane z zachowaniem podanego podziału na linie. Można jedynie pisywać datkowe znaki końca linii w celu poprawy czytelności zapisu (co uczyniono w przykładzie po słowie 'then'). Jeśli chcemy zapisać polecenie w jednej linii, musimy końce linii zastąpić znakiem ';'. Powyższy przykład będzie wówczas miał postać: if [ e ~/.bashrc ]; then echo "Masz plik.bashrc"; Instrukcja if umożliwia również konanie wyboru dwuwariantowego. Składnia takiej instrukcji przedstawiona jest poniżej: if warunek then polecenie1 else polecenie2 http://wiki.kis.p.lodz.pl/lab/index.php/systemy_operacyjne_11 3/10

if [ e ~/.bashrc ] then echo "Masz plik.bashrc" else echo "Nie masz pliku.bashrc" Możliwe jest również testowanie większej ilości warunków (wybór wielowariantowy). Służy tego słowo kluczowe elif (ang. else if). if warunek then polecenie1 elif warunek then polecenie2 else polecenie 3 if [ x /opt/kde/bin/startkde ] then echo "Masz KDE w katalogu /opt" elif [ x /usr/bin/startkde ] then echo "Masz KDE w katalogu /usr" elif [ x /usr/local/bin/startkde ] then echo "Masz KDE w katalogu /usr/local" else echo "Nie wiem gdzie masz KDE" Instrukcja case Instrukcja case pozwala na konanie wyboru wielowariantowego. Wartość zmiennej zmienna porównywana jest z poszczególnymi wzorcami. Jeśli wzorzec ma taką samą wartość jak zmienna wówczas wykonywane są polecenia przypisane tego wzorca. Jeśli nie uda się znaleźć pasowania wykonywane jest polecenie myślne oznaczone symbolem * (gwiazdka). Dlatego warto zawsze to polecenie myślne umieszczać w instrukcji case, co będzie zabezpieczeniem przed błędami popełnionymi przez użytkownika. case zmienna in "wzorzec1") polecenie1 ;; "wzorzec2") polecenie2 ;; "wzorzec3") polecenie3 ;; *) polecenie_myślne esac echo "Podaj cyfrę dnia tygodnia" read d case "$d" in "1") echo "Poniedziałek" ;; "2") echo "Wtorek" ;; "3") echo "Środa" ;; "4") echo "Czwartek" ;; http://wiki.kis.p.lodz.pl/lab/index.php/systemy_operacyjne_11 4/10

"5") echo "Piątek" ;; "6") echo "Sobota" ;; "7") echo "Niedziela" ;; *) echo "Nic nie wybrałeś" esac Pętla for Wykonuje polecenia zawarte wewnątrz pętli, na każdym składniku listy (iteracja). for zmienna in lista polecenie for x in jeden dwa trzy echo "To jest $x" Do zmiennej x w każdym przebiegu pętli for przypisywany jest jeden z elementów listy. Następnie wykonywane jest polecenie echo "To jest $x" Pętla for może być również przydatna, gdy chcemy wykonać jakąś operację na wszystkich plikach w danym katalogu. Poniższy skrypt obrazuje taką sytuację: for x in *html echo "To jest plik $x" Skrypt ten wypisuje wszystkie plik z rozszerzeniem html znajdujące się w bieżącym katalogu. Powłoka 'bash' pozwala na zapis pętli 'for' z zachowaniem składni zbliżonej języka C. Na przykład: # for((a=0;a<5;a++)); echo $a; ; 0 1 2 3 4 Pętla select Pętla select wygeneruje z listy słów po in proste ponumerowane menu, gdzie każdej pozycji odpowiada kolejna liczba od 1 wzwyż. Poniżej menu znajduje się znak zachęty PS3. Umożliwia to wprowadzenie cyfry odpowiadającej wybranej przez nas pozycji w menu. W przypadku, gdy zostanie naciśnięty klawisz ENTER, menu zostanie wyświetlone ponownie. Wartość wprowadzona przez użytkownika zostanie zapisana w zmiennej REPLY. Gdy odczytane zostaje EOF (ang. End Of File) czyli znak końca pliku (CTRL+D) pętla select zakończy pracę. Pętla działa tąd póki nie wykonane zostaje polecenie break lub return. http://wiki.kis.p.lodz.pl/lab/index.php/systemy_operacyjne_11 5/10

select zmienna in lista polecenie select myselection in fred wilma pebbles barney betty case $myselection in fred) echo Fred was the selection ;; wilma) echo Wilma was the selection ;; pebbles) echo Pebbles was the selection ;; barney) echo Barney was the selection ;; betty) echo Betty was the selection ;; esac Efekt działania tego skryptu przedstawiony jest poniżej: $./select 1) fred 2) wilma 3) pebbles 4) barney 5) betty #? 3 Pebbles was the selection #? 5 Betty was the selection #? 6 #? 4 Barney was the selection # Ctrl C $ Pętla while W pierwszym kroku sprawdzany jest warunek czy jest spełniony. Jeśli tak, wówczas wykonywane są polecenia zawarte wewnątrz pętli. Po sprawdzeniu, że warunek jest fałszywy, wykonanie pętli zostaje przerwane. while warunek polecenie x=1; while [ $x le 10 ]; echo "Napis pojawił się po raz: $x" http://wiki.kis.p.lodz.pl/lab/index.php/systemy_operacyjne_11 6/10

x=$[x + 1] Na początku sprawdzany jest warunek, czy zmienna x o wartości początkowej 1 jest mniejsza lub równa 10. Warunek ten jest prawdziwy w związku z czym wykonywane są polecenia zawarte wewnątrz pętli. Przy każdym przebiegu pętli wartość zmiennej x zwiększa jest o 1. Gdy wartość x przekroczy 10, wykonanie pętli zostanie przerwane. Pętla until Pętla until sprawdza, czy warunek jest spełniony. Jeśli nie jest wykonywane jest polecenie lub lista poleceń zawartych wewnątrz pętli, miedzy słowami kluczowymi a. Pętla until kończy swoje działanie w momencie gdy warunek stanie się prawdziwy. until warunek polecenie x=1; until [ $x ge 10 ]; echo "Napis pojawił się po raz: $x" x=$[x + 1] Zmienna x, ma wartość 1. Sprawdzamy, czy wartość zmiennej x jest większa lub równa 10. Jeśli nie to wykonywane są polecenia zawarte wewnątrz pętli. Gdy zmienna x osiągnie wartość 10, pętla zostanie zakończona. Modykowanie działania instrukcji sterujących Break Polecenie break kończy działanie pętli, w której się znajduje. Proszę przyjrzeć się poniższemu skyptowi: #i/bin/bash for imie in Tomek Jacek Henio echo $imie echo "" echo "wszystko zrobione" Po wykonaniu powyższego skryptu uzyskamy: Tomek Jacek Henio wszystko zrobione http://wiki.kis.p.lodz.pl/lab/index.php/systemy_operacyjne_11 7/10

A teraz wersja z wykorzystaniem polecenia break: for imie in Tomek Jacek Henio echo $imie if [ "$imie" = "Jacek" ] then break echo "" echo "wszystko zrobione" Po wykonaniu powyższego skryptu uzyskamy: Tomek Jacek wszystko zrobione Continue Polecenie continue wymusza w pętli przejście kolejnej iteracji. for imie in Tomek Jacek Henio echo $imie if [ "$imie" = "Jacek" ] then continue echo "" echo "wszystko zrobione" Po wykonaniu powyższego skryptu uzyskamy: Tomek Jacek Henio wszystko zrobione Polecenia break i continue przyjmują również argument liczbowy (break N, continue N), pozwalający określać liczbę warstw pętli, przez które mają "przebić" się te instrukcje (na przykład wyjście jednocześnie z N warstw pętli). Trzeba jednak pamiętać, że tego rodzaju operacje prowadzą powstania nieczytelnego kodu, dlatego nie zalecane jest ich uzycie. Funkcje Funkcje są to podprogramy, dzięki czemu często wykorzystywane instrukcje można zgrupować, zamiast pisać je po kilka razy. Aby odwołać się funkcji należy tylko podać jej nazwę. Ogólna składnia funkcji ma postać: function nazwa_funkcji { polecenie1 polecenie2 polecenie3 http://wiki.kis.p.lodz.pl/lab/index.php/systemy_operacyjne_11 8/10

} na przykład: function napis { echo "Przykławy napis" } napis Możliwe jest również umieszczanie funkcji w osobnym pliku. Dzięki temu nasz skrypt będzie bardziej przejrzysty. Jak z tej możliwości skorzystać? Należy utworzyć plik nagłówkowe których odwołujemy się zgodnie z poniższą składnią:. ~/plik_z_funkcjami nazwa_funkcji Obowiązkowo należy pamiętać o podaniu kropki i spacji przed nazwą pliku nagłówkowego. Zdeniujmy funkcję napis w pliku nagłówkowym funkcje. function napis { echo e 'Wywołałeś funkcję z pliku "funkcje".\a' } Aby z tej funkcji skorzystać, należy utworzyć skrypt i umieścić wewnątrz odpowiednie wywołanie funkcji. Zaimplementujemy taki skrypt: echo "Testowanie pliku nagłówkowego". funkcje napis Zadania 1. Podaj ogólną składnie polecenia case. 2. Co to jest znak EOF? 3. Jaki operator oznaczony jest za pomocą ge? 4. Czy możliwe jest umieszczenie funkcji w oddzielnym pliku? 5. Podaj ogólną składnię polecenia for. 6. Napisz skrypt wyświetlający bieżący czas. Skrypt powinien działać momentu przerwania przy pomocy Ctrl C 7. Napisz skrypt wyświetlający wszystkie katalogi w bieżącym katalogu. 8. Korzystając z wcześniejszego skryptu napisz skrypt wyświetlający katalogi w bieżącym katalogu i jego podkatalogach. (Należy przerobić wcześniejszy skrypt na procedurę, która będzie rekursywnie wywoływała samą siebie). http://wiki.kis.p.lodz.pl/lab/index.php/systemy_operacyjne_11 9/10

9. Napisz skrypt wykonujący cztery podstawowe działania arytmetyczne. Skrypt ma pytać jakie działanie użytkownik chce wykonać a następnie o operandy tego działania. Skrypt powinien działać w nieskończonej pętli (szczegóły tyczące działań arytmetycznych można odnaleźć w manualu funkcji expr lub bash). 10. Napisz skrypt, który będzie sprawdzał czy w wywołaniu wystąpiły 3 argumenty. Jeśli nie to ma prosić o ich podanie. 11. Napisz skrypt, który sprawdzi aktualny czas systemowy, a następnie w zależności od wartości godziny wypisze odpowiedni komunikat: <00 06 Dobranoc <06 12 Milego dnia <12 18 Dzien bry <18 24 Dobranoc 12. Napisz skrypt obliczający silnię podanej liczby. 13. Napisz skrypt wyświetlający dwójkową reprezentację liczby podanej w systemie dziesiętnym.. Źródło: "http://wiki.kis.p.lodz.pl/lab/index.php/systemy_operacyjne_11" Tę stronę ostatnio zmodykowano o 11:45, 18 maj 2007; http://wiki.kis.p.lodz.pl/lab/index.php/systemy_operacyjne_11 10/10