Forum www.ispwsznysa.fora.pl Strona Główna www.ispwsznysa.fora.pl
Informatyka Stosowania PWSZ NYSA
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Wprowadzenie do programowania w bash-u

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.ispwsznysa.fora.pl Strona Główna -> Systemy operacyjne I
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
ja
Gość






PostWysłany: Nie 12:09, 11 Maj 2008    Temat postu: Wprowadzenie do programowania w bash-u

Wprowadzenie do programowania w bash-u


Linux ma wbudowaych wiele kompilatorów różnych języków programowania, zaletą Linuksa jest również to, że można pisać skrypty w jego powłoce (shell).

Pisanie skryptów w powłoce linuksowej jest bardzo pożyteczną rzeczą. Jest w penym sensie ułatwieniem, ponieważ zamiast wpisywania szeregu poleceń, możemy wywołać skrypt, który zrobi to za nas. Mam tu na myśli np.montowanie dyskietki czy partcji Win - za pomocą skryptów można je zamontować i odmontować, wpisując jedynie ich nazwę.
Skrypty mogą wyglądać bardzo różnie,mogą ograniczać się do kilku linii lub mogą używać skomplikowanych pętli i warunków.
Do pisania skryptów polecam edytory tekstowe (vi,kate). Skrypt w pierweszej linii zawiera polecenie "#!/bin/bash" jest to odnośnik do shella w jakim piszemy. Skrypty uruchamiamy tak jak każdy inny program, aby go uruchomić należy mu nadać prawo wykonywalności (chmod +x skrypt).
Tak jak w każdym języku programowania tak i w tym przypadku mamy do czynienia ze zmiennymi, funkcjami, pętlami itp. No ale zacznijmy od pierwszego prostego skryptu:

W linii poleceń piszemy vi skrypt

-----cut here------------
#!/bin/bash
echo "pierwszy skrypt"
-----cut here------------

Skrypt ten wypisze nam na ekranie napis "pierwszy skrypt". Proste prawda?
Jak widać polecenie 'echo' wypisuje text na ekran, znaki poprzedzone haszem(#) traktowane są jako komentarze. Jeśli chcemy aby nasz skrypt wykonał jakieś polecenie piszemy je w skrypcie w nastepujący sposób:

--------cut hir---------
#!/bin/bash
mount cdrom /mnt/cdrom
-----cut hir------------

Ten skrypt będzie montował nam cdrom w katalogu mnt. Są to bardzo proste skrypty i chyba zrozumiałe nawet dla początkującego programisty.

Przejdźmy więc do zmiennych. Zmienne można deklarować w każdym miejscu skryptu, możemy je przedstawić jako liczby, znaki i łancuchy znaków .np:

zmienna=4
zmienna=s
znienna=lańcuch

Jeśli chcemy odwołać się do wartości zmiennej dopisujemy przed nią znak $ np:

echo $liczba
echo $znak
echo $lańcuch

Jest możliwość wywołania skryptu z argumentem, np:

./skrypt argument1 argument2

Agumenty numerujemy od 1 do 9. Do ich wartości odwołujemy się jak do zwykłych zmiennych tzn.

echo $2 ---- wyświetli nam agument2

Nieznaczy to wcale, że argumentów nie może być wiecej, jeśli argumentów jest wiecej używamy polecenia 'shift', przesuwa ono argument o jedną pozycję w lewo.

Tracimy 1, ale zyskujemy 10 (jedynkę można przypisać innej zmiennej) np:

---------cut here-------------
#!/bin/bash
echo $1 $2 $3 $4 $5 $6 $7 $8 $9
shift
echo $1 $2 $3 $4 $5 $6 $7 $8 $9
---------cut here------------

Wywołanie :

./skrypt a b c d e f g h i

a b c d e f g h i
b c d e f g h i j

Istnieją zmienne, które przechowują wszystkie argumenty jest to zmienna:
$@ - zawiera ona listę argumentów, do których można się odwołać.

$* - argumenty są łączone w ciągi.

Są jeszcze inne zmienne oto one:

$$ - zwraca PID aktualnego procesu
$! - zwraca PID ostatnio wywołanego procesu
$? - zwraca kod wyjścia polecenia

Pętle to kolejne zagadnienie jakim się zajmiemy zacznijmy od instrukcji warunkowej 'if' - można ją wywołać w następujący sposób:

---------cut here----------
if [warunek]
then
(coś robi)
else
(coś innego robi)
fi
---------cut here----------

---------cut here---------
if[warunek]
then
(coś robi)
elif[inny warunek]
then
(cos innego robi)
else
(coś całkiem innego)
fi
---------cut here------------

Następne pętle to 'while' oraz 'until:

------cut here--------
until[warunek]
do
(coś robi)
done
------cut here--------

------cut here--------
while[warunek]
do
(coś robi)
done
------cut here--------

Pętle nie mogą być puste. Jeśli chcemy mieć pustą pętlę możemy wpisać polecenie ':'

Pętla 'until' wykonywana jest dopóki warunek jest fałszem, natomiast 'while' dopóki jest prawdą.

Teraz pętla 'for':

for zmienna in lista
do

done

Oto prosty przykład :

---------cut here--------
#!/bin/bash
a=1
for((a=1;a<10;a++))
do
echo "LINUX"
done
---------cut here--------

Skrypt ten napisze nam dziesięć razy "LINUX", składnia petli for jest bardzo podobna do składni z jezyka C/C++. Proszę zwrócić uwagę na podwójne nawiasy!!!

Polecenie 'test' służy do sprawdzania warunków. Oto lista warunków, których możemy używać:

#########łańcuchy###########
-z łańcuch - łańcuch ma zerową długość
-n łańcuch - łańcuch ma długość wiekszą od zera
łańcuch1=łańcuch2 - łańcuchy są równe
łańcuch1 != łańcuch2 - łancuchy sa różne

#######liczby całkowite#######

L1 -ge L2 - L1 jest większa bądź równa L2
L1 -lt L2 - L1 jest mniejsza niż L2
L1 -le L2 - L1 jest mniejsza bądz równa L2
L1 -eq L2 - liczby równe
L1 -ne L2 - liczby różne
L1 -gt L2 - L1 większa od L2

##########pliki##############
-b plik - plik jest plikiem blokowym
-p plik - plik jest nazwanym potokiem
-u plik - plik ma ustawiony bit SUID
-g plik - plik ma ustawiony bit SGID
-x plik - plik ma nadane prawo do wykonywania
-f plik - plik istnieje i jest zwyklym plikiem (nie jest np. katalogiem)
-d plik - plik jest katalogiem
-c plik - plik jest plikiem znakowym
-k plik - plik ma ustawiony sticky bit
-s plik - plik nie jest pusty
-r plik - plik ma nadane prawo do odczytu
-w plik - plik ma nadane prawo do zapisu

Metaznaki są to znaki, które zastepują inne znaki,może na początek przedstawie niektóre z nich a potem wyjaśnienia.

'^' - początek wiersza
'?' - jeden dowolny znak
'*a' - łańcuch który ma pierwszą literkę 'a'
'+' - jeden lub wiecej dowolnych znaków

Jeśli naprzykład chcemy wywołać nasz skrypt dla wszystkich plików zaczynający sie na literę a to piszemy:

./skrypt a*

Niektóre znaki specjalne wymagają tak zwanego "maskowania" do maskowania służy znak "". Oto lista znaków które maskujemy :

"." - kropka
"~" - tylda
"'" - apostrof
"\" - backslash
"/" - slash
"""" - cudzysłów

Na przykład jeśli chcemy na ekranie wyświetlić znak "\" to musimy napisać "\\" Mam nadzieje że jest to zrozumiałe.

Przedstawione tu przykłady - to podstawy programowania w shellu, mam nadzieje że artykuł jest zrozumiały i czytelny pytania proszę kierować pod adres [link widoczny dla zalogowanych].
Powrót do góry
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.ispwsznysa.fora.pl Strona Główna -> Systemy operacyjne I Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin