Sprawozdanie Nr 2
Temat: Powłoka BASH
Wykonał:
Bartłomiej Łaszek
Data oddania:
Ocena:
Uwagi prowadzącego:
1. Tworzenie zmiennej
$nazwa_zmiennej = wartość zmiennej
odczytujemy poleceniem echo
$echo $nazwa_zmiennej
2. Listowanie zmiennych powłoki i ich usuwanie
$set
wyświetla listę zmiennych
$unset nazwa_zmiennej
usuwamy zmienną
3. Cytowanie ciągów znaków
Wartości przypisywane zmiennym muszą być ciągiem znaków nie zawierającym spacji i znaków specjalnych. Jednak można takie wartości przypisywać zmiennej używając:
'' '' - podwójnych cudzysłowów prostych
' ' - pojedynczych cudzysłowów prostych
Można też użyć wyniku polecenia Linuxa jako argumentu wiersza poleceń – wtedy używamy:
` ` - cudzysłowów odwrotnych
$notatka = ''Mam dziś dobry humor''
$echo $notatka
4. Skrypty
Skrypt to niekompilowany tekstowy plik wykonywalny, zawierający jakieś polecenia systemowe oraz polecenia sterujące jego wykonaniem (instrukcje, pętle itp.). Wykonywany jest tylko i wyłącznie przez interpreter ( tutaj /bin/bash), który tłumaczy polecenia zawarte w skrypcie na język zrozumiały dla procesora.
$ history
Wszystkie zdarzenia zostaną ponumerowane, dostęp do nich jest możliwy poprzez użycie klawiszy kursor w dół i kursor w górę. Powłoka BASH ma funkcję wyszykiwania i uzupełniania zdarzeń.
Należy wprowadzić tę część zdarzenia, którą pamiętamy, wciskamy klawisz Esc, zaraz za nim klawisz Tab, a zdarzenie pasujące do wprowadzonego tekstu zostanie znalezione i wyswietlone.
Istnieją różne sposoby odwołania się do polecenia z listy historii. Przykładowo:
$ !5
Odwołanie do polecenia nr 5 z listy historii.
$ !ls
Odwołanie do pierwszego znalezionego na liście polecenia zaczynajacego się ls.
$ !-2
Odwołanie do drugiego od końca listy polecenia.
Uwaga: polecenia są numerowane według kolejności ich wykonywania.
Sposoby edycji zdarzeń historii
Istnieją dwa sposoby edycji:
– pierwszy wykorzystuje możliwość edytora wiersza poleceń do odwołania sie do zdarzenia i edycji polecenia za pomocą zestawu poleceń edytora emacs. Zestaw poleceń znajduje się
poniżej:
[Ctrl+p] – przejście do poprzedniego polecenia listy historii
[Ctrl+n] - przejście do następnego polecenia listy historii
[Ctrl+<] - przejście na początek listy historii
[Ctrl+>] - przejście na początek listy historii
/wzorzec – przeszukiwanie listy wstecz
?wzorzec – przeszukiwanie listy wprzód
n – powtórzenie przeszukiwania
– drugi wykorzystuje do edycji poleceń edytor (domyslnie vi) wskazywany zmienną FCEDIT. W czasie wykonywania polecenia można wskazać wykorzystywany edytor, przykładowo emacs.
$ fc 5
Wywołanie domyślnego edytora dla edycji 5ego polecenia listy
$ fc -e emacs 5
Wywołanie edytora emacs dla edycji 5ego polecenia listy
Instrukcje warunkowe
Instrukcja warunkowa if
Sprawdza czy warunek jest prawdziwy, jeśli tak to wykonane zostanie polecenie lub polecenia znajdujące się po słowie kluczowym then. Instrukcja kończy się słowem fi.
Składnia:
if warunek
then
polecenie
fi
polecenie1
else
polecenie2
Instrukcja case
Pozwala na dokonanie wyboru spośród kilku wzorców. Najpierw sprawdzana jest wartość zmiennej po słowie kluczowym case i porównywana ze wszystkimi wariantami po kolei.
case zmienna in
"wzorzec1") polecenie1 ;;
"wzorzec2") polecenie2 ;;
"wzorzec3") polecenie3 ;;
*) polecenie_domyślne
esac
Pętle
Pętla for
Wykonuje polecenia zawarte wewnątrz pętli, na każdym składniku listy (iteracja).
for zmienna in lista
do
done
Pętla select
Wygeneruje z listy słów po in proste ponumerowane menu, każdej pozycji odpowiada kolejna liczba od 1 wzwyż. Poniżej menu znajduje się znak zachęty PS3 gdzie wpisujemy cyfrę odpowiadająca wybranej przez nas pozycji w menu.
select zmienna in lista
Pętla while
Najpierw sprawdza warunek czy jest prawdziwy, jeśli tak to wykonane zostanie polecenie lub lista poleceń zawartych wewnątrz pętli, gdy warunek stanie się fałszywy pętla zostanie zakończona.
while warunek
Pętla until
Sprawdza czy warunek jest prawdziwy, gdy jest fałszywy wykonywane jest polecenie lub lista poleceń zawartych wewnątrz pętli, miedzy słowami kluczowymi do a done. Pętla until kończy swoje działanie w momencie gdy warunek stanie się prawdziwy.
until warunek
Polecenie read
Czyta ze standardowego wejścia pojedynczy wiersz.
read -opcje nazwa_zmiennej
Funkcje
Coś w rodzaju podprogramów. Stosuje się je gdy w naszym skrypcie powtarza się jakaś grupa poleceń, po co pisać je kilka razy, skoro można to wszystko umieścić w funkcjach. Do danej funkcji odwołujemy się podając jej nazwę, a wykonane zostanie wszystko co wpisaliśmy między nawiasy { }, skraca to znacznie długość skryptu.
function nazwa_funkcji
{
polecenie3
}
Przykładowe skrypty
#!/bin/bash
echo "Podaj cyfre dnia tygodnia"
read d
case "$d" in
"1") echo "Poniedziałek" ;;
"2") echo "Wtorek" ;;
"3") echo "Środa" ;;
"4") echo "Czwartek" ;;
"5") echo "Piątek" ;;
"6") echo "Sobota" ;;
"7") echo "Niedziela" ;;
*) echo "To nie jest dzień tygodnia"
Ten skrypt po uruchomieniu go zapyta nas o jakąś liczbę. Może być to dowolna liczba. Co więcej jeżeli nawet podana wartość nie będzie żadną liczbą, to i tak zostanie wyświetlona tzw informacja o błędzie. W tym przypadku informacja jaka zostanie wyświetlona jest nastepująca ''to nie jest dzień tygodnia''. Jest to prosty skrypt który potrzebuje do działania tylko paru zmiennych.
echo "witam policzę twoje miejsca zerowe funkcji kwadratowej"
echo "wprowadź wartość przy A"
read x2
echo "wprowadź wartość przy B"
read x1
echo "wprowadź wartość wyrazu C"
read x0
let "del=$x1*$x1+(-4*$x2*$x0)"
del1=`echo "sqrt ($del)" | bc`
if let "$del<0"
echo "brak miejsc zerowych"
elif "$x2=0"
echo "to nie jest funkcja kwadratowa"
elif [ $del -eq 0 ]
let "po=(-1*$x1)/(2*$x2)"
echo "pierwiastek to $po"
let "p1=(-1*$x1-$del1)/(2*$x2)"
let "p2=(-1*$x1+$del1)/(2*$x2)"
echo "pierwiastki to x1=$p1 i x2=$p2"
Ten skrypt policzy nam miejsca zerowe funkcji kwadratowej i poda nam je w postaci liczb całkowitych. Nie jest on co prawda doskonały ale jest bardziej rozbudowany niż poprzedni.
bartek8809