USUX W06

Dokument: pdf (100.2 KB)
  • 6 stron
Opublikowany 2017-07-23 02:12:23

Wykład 6 1. Skrypty powłoki ● Skrypt – możemy w inm zamieszczać takie rzeczy jak: ◦ odwołania do zmiennych ◦ wybrane polecenia powłoki ◦ petle sterujące wywołania innych skryptów i programów ◦ komentarze - #komentarz 1.1 Argumenty wywołania ● Parametry pozycyjne: $0, $1, $2, $3, ${10}... 1.2 Metody uruchamiania skryptów ● Jawne wywołanie powłoki ➔ sh skrypt .arg.... • nowy proces powłoki • prawo r ● przez nazwę skryptu ➔ chmod +x skrypt ➔ skrypt arg... (./skrypt arg...) • nowy proces powłoki • prawa rx ● w powłoce bieżącej ➔ skrypt arg... ➔ source skrypt arg... • prawo r • bieżący proces powłoki ➔ np. source .zshrc ➔ ..zshenv ● zastąpienie bieżącej powłoki • exec skrypt arg... ● wskazanie powłoki w skrypcie • #!/bin/zsh – 1 wierszu, jezeli określamy jaka powłoka ma się wywołac • domyślnie: sh 2. Podstawowe konstrukcje języka powłoki 2.1 Pętle i polecenia sterujące Pętla for for zmienna [in słowo] //in słowo – lista wartości do lista poleceń done • np. for arg in $* do echo $arg done for arg do echo $arg done for((wyrażenie 1; wyrażenie 2; wyrażenie 3)) do lista poleceń done Pętla while While lista_warunków do lista poleceń done Pętla until Untill lista_warunków do lista_poleceń done Switch case słowo in Wzorzec [|wzorzec]...) lista poleceń;; ... esac • np case $1 in +) echo "znak +";; -) echo "znak -";; '*') echo "znak *";; ... *) echo " inny znak";; #nie ma defaulta esac Polecenie if If lista_warunków then lista_poleceń elif lista_warunków then lista_poleceń else lista_poleceń fi inne polecenia Continue [n] break [n] #n – przy zagnieżdżonych pętlach można przejść do zewnętrznych Kończenie skryptu Exit [status] 2.2 Sprawdzanie warunków ➔ mechanizm wbudowany (bash, zsh) ◦ [[warunek]] ➔ polecenie test ◦ test warunek ◦ [warunek] polecenie test ● Testtowanie atrybutów plików ◦ -r plik – czy uzytkownik ma prawo do czytania tego pliku, podobnie -x plik, -w plik ◦ -f plik – plik zwykły ◦ -d plik – katalog ◦ -c plik – plik specjalny znakowy ◦ -b plik plik specjalny blokowy ◦ -p plik – FIFO ◦ -h plik – dowiązanie symboliczen ◦ -s plik – plik o niezerowej długości ▪ np. if[-w katalog1] then mkdir katalog1/kat2 fi ● porównanie łańcuchów znaków – s1, s1 = s2, s1 != s2 ◦ np. while [$1] do echo $1 shift done #zakończy się gdy s1 będzie zerowy (nie będzie już napisów) ● porównanie liczb całkowitych ◦ n1 -eq n2 = ◦ n1 -ne n2 != ◦ -lt < ◦ -le =< ◦ -gt >◦ -ge =>▪ np. while [$# -gt 0] do echo $1 shift done ● łączenie warunków ◦ -a AND ◦ -o OR ◦ ! NOT ◦ () grupowanie ▪ np. if [! -d $ -0 ! -x $1] #jeśli plik nie jets katalogiem albo nie ma praw x echo "plik $1 nie jest katalogiem lub nie ma prawa x" exit 1 else ls -l $1 ... fi 2.3 Operacje wejścia wyjścia • read – wczytanie danych ze strumienia wejściowego stdin i dokonuje podzału na wyrazy ◦ read [opcje] zmienna... IFS – separator • echo [opcje] [arg...] • printf format [arg...] 3. Operacje arytmetyczne • Mechanizm wbudowany ◦ $((wyrażenie_do_obliczenia)) ◦ let wyrażenie [wyrażenie...] np. let x = 5+6 let x = 2*3 let x = x-1 echo $((x = x + 1)) echo $((x = 5*7)) • polecenie expr ◦ expr arg op arg, arg op arg... • operatory arytmetyczne: + = / * % • operaory porównania: != = \>= • operatory dopasowania: : łańcuch: wzorzec zmienna = `expr wyrazenie` zmienna $(expr wyrażne) nop. X = `expr &x + 1` expr $1 : '.*' expr $1: `[0-0]*' 4. Funkcje powłoki nazwa() {lista prarmetrów zmienna = `nazwa arg1 arg2 np. plus () { cho `expr $1 + $2` } plus 5 11 5. Przykład skryptu skrypt suma #!/bin/sh # powłoka plus(4){ `expr $1 + $2 2>/dev/null` if($? -ne 2] then echo $x else echo $1 fi } if[$# -eq 0] then echo "Poprawne wywołanie: $0 arg1 [arg2...] exit 1 fi suma = 0 while [$1] do suma = "Suma argumentów wynosi: $suma"

Tagi:

Komentarze do: USUX W06 • 0