Systemy operacyjne - Programowanie w powłoce linux
1. Skrypt to uruchamialny plik tekstowy, które mają ustawione odpowiednie prawo dostępu - prawo wykonywania. Skrypty używają komend systemowych. Skrypt powłoki Linuksa jest interpretowany przez powłokę Linuksa (Bash Shell / C Shell).
2. Tworzenie skryptów w Linuxie:
#!/bin/bash -> linijka, w której podajemy w jakiej konkretnie powłoce skrypt powinien w dalszej części się uruchamiać
#moj program -> komentarz linijkowy
Zmienne:
1. specjalne -> najbardziej prywatne zmienne powłoki, są udostępniane użytkownikowi tylko do odczytu
np.
$0 - nazwa bieżącego skryptu lub powłoki
$1..$9 - Parametry przekazywane do skryptu
$$ – PID (Proces ID) bieżącej powłoki. Dla skryptu jest to PID procesu, w którym został uruchomiony skrypt
$? – Kod, z jakim zakończyła się ostatnia operacja
$! – identyfikator ostatnio uruchomionego procesu w tle
2. środowiskowe - napis, liczba całkowita lub ścieżka dostępu
np.
x=3 - przypisanie liczby do zmiennej
str="napis" - przypisanie napisu do zmiennej
str=`napis` - przypisanie napisu do zmiennej przy użyciu apostrofów
Operacje arytmetyczne:
- + (dodawanie)
- - (odejmowanie)
- * (mnożenie)
- / (dzielenie)
- % (reszta z dzielenia)
Operacje arytmetyczne mogą być użyte z komendami: let oraz expr lub z wyrażeniem $[]
np.
#!/bin/bash
y=7
let ”x=y-1”
echo $x
x=`expr $y - 1` #tutaj dajemy spacje!!!
echo $x
x=$[y–1]
echo $x
Deklarowanie tablic w Bashu:
table=(wartosc1 wartosc2)
lub:
table[0] = "wartosc1"
table[1] = "wartosc2"
table[2] = "wartosc3"
Usuwanie elementu z tablicy:
unset table[1]
Usuwanie tablicy:
unset table[*]
Konstrukcja instrukcji warunkowej:
#!/ bin/ bash
if [ $1 - eq 2 ]
then
echo " Dwa "
else
echo " Nie dwa "
fi
Konstrukcja pętli for:
#!/bin/bash
for i in $(seq 1 2 20)
do
echo "Welcome $i times"
done
lub (dla Basha od wersji 3.0):
#!/bin/bash
for i in {1..5}
do
echo "Welcome $i times"
done
lub (dla Basha od wersji 4.0):
#!/bin/bash
for (( c=1; c<=5; c++ ))
do
echo "Welcome $c times..."
done
Konstrukcja pętli while:
#!/bin/bash
x=1
while [ $x -le 5 ]
do
echo "Welcome $x times"
x=$(( $x + 1 ))
done
Metody porównania pomiędzy liczbami:
- -lt (mniejsze niż) np. [$# -lt 2]
- -gt (większe niż)
- -le (mniejsze lub równe)
- -ge (większe lub równe)
- -eq (równe)
- -ne (różne)
Metody porównania pomiędzy ciągami znaków:
- == (równe) np. [ ”$a” == ”q” ]
- != (różne)
- -n (puste)
- -z (niepuste)
Informacje o pliku [ -option sciezka/plik1.txt ] :
- -a (czy plik istnieje)
- -b (czy plik istnieje i jest specjalnym plikiem blokowym)
- -c (czy plik istnieje i jest specjalnym plikiem znakowym)
- -L (czy plik istnieje i jest to dowiązanie symboliczne)
- -d (czy katalog istnieje)
Sprawdzanie relacji pomiędzy plikami [ sciezka/plik1.txt -option sciezka/plik2.txt ] :
- -nt, -ot (czy plik1 jest nowszy niż plik2)