T: Skrypty powłoki.

Skrypt to nieskompilowany tekstowy plik wykonywalny, zawierający jakieś polecenia systemowe oraz polecenia sterujące jego wykonaniem (np. instrukcje, pętle). Wykonywany jest tylko i wyłącznie przez interpreter ( np. /bin/bash), który tłumaczy polecenia zawarte w skrypcie na język zrozumiały dla procesora.

Skrypty, czyli programy powłoki, są prostymi plikami tekstowymi zawierającymi niektóre polecenia Linuksa i powłoki bash. Po uruchomieniu programu powłoki polecenia są wykonywane jedno po drugim. Program powłoki może mieć przekazane parametry, tak jak w wypadku jakiegokolwiek normalnego polecenia. Parametry te mogą być oceniane wewnątrz programu. Ponieważ proste, sekwencyjne wykonywanie kilku poleceń nie zostawia wiele miejsca dla złożonych zadań, bash wspiera programowanie powłoki poleceniami do konstruowania pętli i rozgałęzień. Dzięki temu mamy do dyspozycji prawdziwy język programowania, do którego nie potrzebujemy wiedzy na temat kompilatora lub języka C.

Skrypty są potężnym narzędziem programistycznym (rozbudowana składania, instrukcje pętli, warunku i wyboru, zmienne, stałe i wiele wiele innych). Typowym zastosowaniem programów powłoki jest automatyzacja najczęściej wykorzystywanych sekwencji poleceń do instalacji programów, administracji systemem, tworzenia kopii zapasowych, konfiguracji i wykonywania pojedynczych programów itd.

Zadanie1:

Skrypty należy konstruować w następujący sposób:

Przykładowe skrypty:

Zadanie2:

exec #słowo kluczowe wywołujące programy w skryptach (np. exec mc)

Język powłoki bash jest rozszerzeniem powłoki sh. Większość skryptów przeznaczonych dla powłoki sh działa bez zmian w powłoce bash, wyjątkami są skrypty, które odwołują się do wbudowanych zmiennych powłoki Bourne'a lub używają wbudowanych poleceń tej powłoki. Składnia poleceń powłoki bash zawiera idee pochodzące z powłoki Korna i csh takie jak edycja linii poleceń (ang. command-line editing), historia poleceń, stos katalogów, zmienne $RANDOM i $PPID oraz POSIX-owe podstawianie polecenia (składnia: $((...))). Gdy bash jest używany interaktywnie, dostępne jest dokańczanie nazw plików, poleceń wbudowanych i zewnętrznych programów, zmiennych, itd. dzieje się to po naciśnięciu klawisza TAB.

Jednym z ograniczeń powłoki sh jest to, że nie umożliwia ona operowania na liczbach całkowitych bez tworzenia nowego procesu. Bash umożliwia wykonanie obliczeń za pomocą wyrażeń w podwójnych nawiasach ((...)) oraz składni $[...]. Przykładowo:

Składnia ((...)) może być także wykorzystana w wyrażeniach warunkowych, ponieważ w wyniku wykonania zwracane jest 0 lub 1 w zależności od tego czy porównanie wartości zwraca fałsz czy prawdę:

Składnia ((...)) umożliwia posługiwanie się operatorami: '==', '!=', '>', '<', '>=' i '<='. Bash nie umożliwia wykonywania obliczeń z wykorzystaniem liczb zmiennoprzecinkowych.

Bash rozszerza składnię powłoki sh służącą do przekierowania wejścia/wyjścia. Możliwe jest skierowanie standardowego wejścia i standardowego wyjścia dla błędów do pliku w sposób krótszy niż w sh:

W powłoce Bourne'a wyglądałoby to następująco 'polecenie > plik 2>&'. Od wersji 2.05b możliwe jest przekierowanie zmiennej na standardowe wejście polecenia:

Przykład: Przekieruj standardowe wyjście do pliku, wypisz dane, zamknij plik, zresetuj wyjście:

Otwórz i zamknij plik:

Podstaw wyjście zewnętrznego polecenia do zmiennej:

Bash 3.0 posiada wbudowaną obsługę wyrażeń regularnych, dopasowanie odbywa się za pomocą składni przypominającej Perl:

Używa się standardowych wyrażeń regularnych opisanych na stronie regex(7) podręcznika man. Powyższe polecenie zwraca wartość 0, gdy dopasowanie udało się lub 1 w przeciwnym przypadku. Podwyrażenia otoczone nawiasami są dostępne w zmiennej powłoki BASH_REMATCH, tak jak w poniższym przykładzie:

Używanie powyższej składni, zamiast programu grep, daje kod działający szybciej, ponieważ unika się kosztownego tworzenia nowego procesu.

Uruchamianie wcześniej utworzonego skryptu, dopisać składnię do pliku rc.local, np.:

Uruchamianie skryptu automatycznie przy starcie systemu:

Parametry polecenia echo:

Przykład z przerwaniem działania skryptu po osiągnięciu celu:

Pingowanie komputerów w sieci lokalnej:

Polecenie test służy do porównywania wartości:

Parametry polecenia test:

Składnia polecenia if: