kurs linuks skrypty powłoki XI7JMBJT7NLBOY3XHJGJNBTZSPVIAZCOZPOZTMQ


Podstawy http://zsk.tech.us.edu.pl/dydaktyka/laboratorium/sysoper/linux/8_6.html

Linux pozwala na tworzenie tzw. "skryptów". Są to pliki o charakterze tekstowym, zawierające szereg komend do wykonania przez powłokę. Skrypty bywają przydatne przy wielokrotnym wykonywaniu podobnych czynności. Programowanie skryptowe jest tematem zaawansowanym, w niniejszym kursie przedstawione zostaną jedynie jego podstawy dotyczące powłoki sh.

Najprostszym skryptem jest:

#!/bin/sh echo

Hello world!

Skrypt ten wyświetla na terminalu komunikat:

Hello world!

Zawartość skryptu jest prosta i przejrzysta. Pierwsza linia wymusza zastosowanie powłoki sh przy uruchomieniu skryptu, druga natomiast wyświetla stosowny komunikat.

Zmienne

Przy programowaniu skryptów przyjęło się nazywanie zmiennych dużymi literami. Ustalenie ich początkowej wartości następuje poprzez podanie jej nazwy, znaku równości oraz wartości, np:

ZMIENNA1="To jest tekst"

ZMIENNA2=123

Dalsze odwołania do zmiennych dokonywane są przez poprzedzenie nazwy zmiennej znakiem "$", np.

echo $ZMIENNA1

Na zmiennych można dokonywać również prostych operacji matematycznych. Ilustruje to poniższy przykład:

#!/bin/sh

TEKST="Hello world!"

LICZBA=12

SUMA=$[$LICZBA+111]

echo Tekst: $TEKST

echo Liczba: $LICZBA

echo Suma: $SUMA

Taki sktypt w wyniku działania wyświetli:

Tekst: Hello world!

Liczba: 12

Suma: 123

Pod zmienną można również podstawić tekst wprowadzony przez użytkownika. Ilustruje to poniższy skrypt:

#!/bin/sh

echo Wpisz tekst:

read TEST

echo Napisałeś:

echo $TEST

źródłem danych do zmiennej może być np. wywołanie zewnętrznego programu. W takim wypadku należy posłużyć się składnią:

ZMIENNA='polecenie zewnętrzne'

Parametry

Do skryptu przekazać można parametry wywołania. Parametry można używać podobnie jak zmienne, jednak bez zmiany ich wartości. Każdy parametr wywołania skryptu posiada swój kolejny numer. Nazwa skryptu to parametr numer 0. Pierwszy parametr wywołania oznaczony jest liczbą 1. Odwołania w treści skryptów do parametrów wyglądają następująco:

$* - wszystkie parametry począwszy od 1

$0 - parametr 0 - nazwa skryptu

$1 - parametr 1

...

$9 - parametr 9

$# - liczba parametrów

$$ - numer procesu (przydatne przy tworzeniu plików

tymczasowych)

Skrypt ilustrujący wykorzystanie parametrów:

#!/bin/sh

TYMCZAS=/tmp/skrypt_tmp.$$

echo Nazwa skryptu: $0

echo Liczba parametrów: $#

echo Pełne parametry wywołania: $*

echo Parametr 1: $1

echo Parametr 2: $2

echo Parametr 3: $3

echo Parametr 4: $4

echo Parametr 5: $5

echo A teraz następuje trzykrotny shift...

shift

shift

shift

echo Parametr 1: $1

echo Parametry pełne: $*

echo PID: $$

echo Nazwa pliku tymczasowego: $TYMCZAS

Skrypt został wywołany poprzez:

./skrypt_przykladowy pierwszy drugi 3 4 to jest piąty szósty i tak dalej

Wynik działania tego skryptu:

Nazwa skryptu: ./skrypt_przykladowy

Liczba parametrów: 9

Pełne parametry wywołania: pierwszy drugi 3 4 to jest piąty szósty i tak dalej

Parametr 1: pierwszy

Parametr 2: drugi

Parametr 3: 3

Parametr 4: 4

Parametr 5: to jest piąty

A teraz następuje trzykrotny shift...

Parametr 1: 4

Parametry pełne: 4 to jest piąty szósty i tak dalej

PID: 706

Nazwa pliku tymczasowego: /tmp/skrypt_tmp.706

Warunki

Możliwe do zrealizowania jest również przetwarzanie warunkowe. Do tego celu służy instrukcja "if ... then ... else ... fi". Prześledzić to można na prostym przykładzie:

#!/bin/sh

DZIEN_ROKU=`date +%j`

if [ $DZIEN_ROKU -le 178 ] ; then

echo Pierwsza połowa roku;

else

echo Druga połowa roku;

fi

W skrypcie tym `date +%j` zwraca numer kolejnego dnia w roku. Warunek w instrukcji if oznacza "jeśli zmienna DZIEN_ROKU jest mniejsza lub równa 178". Więcej informacji na temat warunków otrzymać można w pomocy kontekstowej do test(1).

Możliwe jest również zagnieżdżenie warunków (tzw. "else if"). Dokonuje się tego poprzez konstrukcję "elif ... then ..." analogicznie jak w przypadku instrukcji if.

Innym rodzajem instrukcji warunkowej jest konstrukcja "case ... in ... ;; esac". Jej działanie prześledzić można na przykładzie:

#!/bin/sh

case $1 in

pomoc) echo "Ten skrypt nie posiada pomocy!" ;;

help) echo "Używaj języka polskiego!" ;;

*) echo Napisałeś $1;;

esac

Skrypt ten, w zależności od podanego parametru wyświetla odpowiedni napis. Konstrukcja *) obejmuje wszystkie pozostałe możliwości.

Pętle

Do powtarzających się operacji przydatne są pętle. Istnieją trzy instrukcje organizujące skrypty powłoki w pętle.

Pierwszą z nich jest "for ... in ... do ... done". Przykład użycia:

#!/bin/sh

echo Podałeś następujące parametry:

for PARAMETR in $* ; do

echo $PARAMETR ;

done

Skrypt ten listuje wszystkie parametry wywołania programu. Na przykład dla wywołania:

./skrypt_przykladowy pierwszy 2 trzeci

Wynik będzie następujący:

Podałeś następujące parametry:

pierwszy

2

trzeci

Kolejną instrukcją zapętlającą jest "while ... do ... done". Przykład użycia w nieskończonej pętli:

#!/bin/sh

LINE=0

echo Wpisz liczby. 0 = koniec.

while true ; do

read LICZBA

SUMA=$[$SUMA+$LICZBA]

if [ $LICZBA = "0" ] ; then

break

fi

done

echo Suma: $SUMA

Skrypt sumuje liczby wprowadzone przez użytkownika, aż użytkownik wpisze 0. W skrypcie tym wykorzystano pętle while, a jako warunek wpisano warunek zawsze prawdziwy - true. Przerwanie pętli następuje w momencie wykonania instrukcji break. Do sterowania tą pętlą istnieje jeszcze jedna instrukcja - continue, która wymusza kolejną iteracje pętli.

Przykład działania skryptu:

Wpisz liczby. 0 = koniec.

100

33

-12

0

Suma: 121

Ostatnią instrukcją organizującą pętle jest "until ... do ... done". Działa ona identycznie jak while, z wyjątkiem tego, że warunek jest zanegowany.



Wyszukiwarka

Podobne podstrony:
14 skrypty powłoki IIid 15551 ppt
Kurs zastępowych skrypt 6, Kurs zastępowych
Kurs zastępowych skrypt 2, Kurs zastępowych
Kurs zastępowych skrypt 7, Kurs zastępowych
Kurs zastępowych skrypt 1, Kurs zastępowych
Kurs zastępowych skrypt 4, Kurs zastępowych
materiał skrypty powłoki cmd exe
Kurs zastępowych skrypt 3, Kurs zastępowych
13 Linux Skrypty powłokiid 14707 ppt
2006 10 Skrypty powłoki w systemie Linux [Poczatkujacy]
Kurs zastępowych skrypt 0, Kurs zastępowych
09 Linux Skrypty powłoki część II
Kurs zastępowych skrypt 5, Kurs zastępowych
Skrypty powloki systemu Linux Receptury
Programowanie skryptow powloki powlok 2
Skrypty powloki systemu Linux Receptury sposyl
Skrypty powloki systemu Linux Receptury 2
Skrypty powłoki Od podstaw
informatyka skrypty powloki systemu linux receptury sarath lakshman ebook

więcej podobnych podstron