www.ispwsznysa.fora.pl
Informatyka Stosowania PWSZ NYSA
FAQ
Szukaj
Użytkownicy
Grupy
Galerie
Rejestracja
Profil
Zaloguj się, by sprawdzić wiadomości
Zaloguj
Forum www.ispwsznysa.fora.pl Strona Główna
->
Systemy operacyjne I
Napisz odpowiedź
Użytkownik
Temat
Treść wiadomości
Emotikony
Więcej Ikon
Kolor:
Domyślny
Ciemnoczerwony
Czerwony
Pomarańćzowy
Brązowy
Żółty
Zielony
Oliwkowy
Błękitny
Niebieski
Ciemnoniebieski
Purpurowy
Fioletowy
Biały
Czarny
Rozmiar:
Minimalny
Mały
Normalny
Duży
Ogromny
Zamknij Tagi
Opcje
HTML:
NIE
BBCode
:
TAK
Uśmieszki:
TAK
Wyłącz BBCode w tym poście
Wyłącz Uśmieszki w tym poście
Kod potwierdzający: *
Wszystkie czasy w strefie CET (Europa)
Skocz do:
Wybierz forum
Semestr VI (letni) 2010/2011
----------------
Ogólne
SW = Systemy wbudowane
SSO = Sieciowe systemy operacyjne
SRRP = Systemy rozproszonego i równoległego przetwarzania
KRSI = KRSI - kierunki rozwoju systemów inf
BSSK = Bezpieczeństwo sieci i systemów komputerowych
Semestr V (zimowy) 2009/2010
----------------
Podstawy sztucznej inteligencji
Zarządzanie przedsięwzięciami programistycznymi
Hurtownie danych
Komputerowe systemy sterowania
Programowanie w językach skryptowych
Zaawansowane zagadnienia sieci komputerowych
Angielski
OFF TOPIC
Semestr IV (letni) 2008/2009
----------------
Język angielski
Programowanie w Javie
Nowoczesne Systemy Baz Danych
Podstawy Inżynierii Oprogramowania
Podstawy Symulacji Systemów
Systemy Grafiki Komputerowej
Systemy Informatyczne
Archiwum
----------------
Programowania I
Podstawy systemów komputerowych PSK
Algebra liniowa z geometrią
Fizyka
Zarządzanie
Marketing
Problemy społeczne
Programowanie II (C)
Analiza matematyczna
Algorytmy i struktury danych
Logika dla informatyków
Podstawy elektroniki i miernictwa
Systemy operacyjne I
Teoria układów logicznych i cyfrowych
Architektura komputerów
Podstawy metod probabilistycznych
Podstawy baz danych
Podstawy sieci
Podstawy podejmowania decyzji
Systemy operacyjne II
Zarządzanie danymi informacyjnymi
Przegląd tematu
Autor
Wiadomość
ja
Wysł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
linux_art@interia.pl
.
fora.pl
- załóż własne forum dyskusyjne za darmo
Powered by
phpBB
© 2001, 2005 phpBB Group
Regulamin