bash 2 ----- wykład3i4

20
1 PODSTAWY INFORMATYKI dr inż. Krzysztof Malecki Operatory || i && polecenie1 || polecenie2 polecenie1 && polecenie2 Operator OR ( || ) spowoduje wykonanie polecenia2 tylko wtedy, gdy polecenie1 zakończy się niepowodzeniem. Operator AND ( && ) spowoduje wykonanie polecenia2 jedynie wtedy, gdy polecenie1 zwróci kod wyjścia 0.

Upload: kkk112

Post on 20-Mar-2017

169 views

Category:

Business


2 download

TRANSCRIPT

Page 1: Bash 2   -----      wykład3i4

1

PODSTAWY INFORMATYKI

dr inż. Krzysztof Małecki

Operatory || i &&

• polecenie1 || polecenie2

• polecenie1 && polecenie2

• Operator OR ( || ) spowoduje wykonanie polecenia2

tylko wtedy, gdy polecenie1 zakończy sięniepowodzeniem.

• Operator AND ( && ) spowoduje wykonanie polecenia2

jedynie wtedy, gdy polecenie1 zwróci kod wyjścia 0.

Page 2: Bash 2   -----      wykład3i4

2

Polecenia testujące i wyrażenia testowe

• Sprawdzają wartość wyrażenia testowego wyrażenie ijeśli jest prawdziwe, zwracają wartość 0, w przeciwnymwypadku wartość różną od 0:

– test wyrażenie

– [ wyrażenie ]

• Przykład:

– test „$zmienna” = „informatyka”

– [ „$zmienna” = „informatyka” ]

• 0 gdy wartość zmiennej równa się łańcuchowiinformatyka

Uwaga: W poleceniach testujących jest konieczne odseparowanie operandów od operatorów – znak spacji.

Przykładowe wyrażenia testowe

• Dla liczb całkowitych�a –eq b a=b

�a –ne b a≠b

�a –le b a≤b

�a –lt b a<b

�a –ge b a≥b

�a –gt b a>b

Page 3: Bash 2   -----      wykład3i4

3

Przykładowe wyrażenia testowe

• Dla łańcuchów�-z łańcuch łańcuch ma długość 0

�-n łańcuch łańcuch ma niezerową długość

�łańcuch1 == łańcuch2 są identyczne

�łańcuch1 != łańcuch2 są różne

Przykładowe wyrażenia testowe

• Dla plików�-e plik plik istnieje

�-d plik plik istnieje i jest katalogiem

�-r plik plik istnieje i jest do czytania

�-w plik plik istnieje i jest zapisywalny

�-x plik plik istnieje i jest wykonywalny

�plik1 –nt plik2 plik1 jest nowszy od plik2

�plik1 –ot plik2 plik1 jest starszy od plik2

Page 4: Bash 2   -----      wykład3i4

4

Logiczne wyrażenia testowe

( wyrażenie ) wyrażenie jest prawdziwe

! wyrażenie wyrażenie jest fałszywe

wyr1 –a wyr2 wyr1 i wyr2 są prawdziwe

wyr1 –o wyr2 wyr1 lub wyr2 są prawdziwe

Instrukcja if

if polecenie_testujące

thenpolecenia_do_wykonania

fi

polecenia_do_wykonania zostaną wykonane, gdy polecenie_testujące zwróci wartość 0

(czyli gdy jest prawdziwe)

if polecenie_testujące

thenpolecenia_do_wykonania1

elsepolecenia_do_wykonania2

fi

Page 5: Bash 2   -----      wykład3i4

5

Elif = else if

if polecenie_testujące1

thenpolecenia_do_wykonania1

elseif polecenie_testujące2

then

polecenia_do_wykonania2

fifi if polecenie_testujące1

thenpolecenia_do_wykonania1

elif polecenie_testujące2

then

polecenia_do_wykonania2

fi

Instrukcja case

testowana wartość jest porównywana z kolejnymi

wartościami od wzorzec1 do wzorzecN

We wzorcach można stosować: znaki

uogólniające (*, ?) oraz zbiory znaków ( [a-z], [2-9] )

* ) - wartość domyślna

(jeśli nie pasuje żaden z wzorców) i jest opcjonalna

case testowana_wartość inwzorzec1 )

ciąg_poleceń1

;;wzorzec2 )

ciąg_poleceń2

;;…wzorzecN )

ciąg_poleceńN

;;* )

ciąg_poleceń

;;esac

Page 6: Bash 2   -----      wykład3i4

6

Pętla for

Instrukcja for służy do wykonywania określonej grupy poleceń dla kilku wartości danej zmiennej.

Lista_poleceń wykonywana dla każdego parametru z listy_słów; zmienna w kolejnej iteracji zastępowana kolejnym

parametrem z listy_słów.

Pominięcie [in lista_słów] powoduje przyjęcie, że lista_słów jest łańcuchem zawierającym wszystkie parametry wywołania

($1 $2 $3 …)

for zmienna [in lista_słów]do

lista_poleceń

done

Pętla for - przykład

Skrypt kopiujący wszystkie pliki, których nazwy są zapisane w pliku p1, do katalogu kat1 znajdującego się w folderze nadrzędnym.

#!/bin/bashfor A in ‘cat p1’do

echo „Kopiowanie pliku $A”cp $A ../kat1

done

for zmienna [in lista_słów]do

lista_poleceń

done

Page 7: Bash 2   -----      wykład3i4

7

Pętla for – inna forma

Postać analogiczna do pętli for w języku C.

Lista_poleceń wykonywana po obliczeniu wyr1 i sprawdzeniu, że wyr2 jest prawdziwe; obliczane jest wyr3 i sprawdzany

warunek wyr2. Pętla kończy działanie, gdy wyr2 będzie fałszywe.

for ( ( wyr1; wyr2; wyr3 ) )do

lista_poleceń

done

Pętla for - przykład

Skrypt wypisujący liczby całkowite od 1 do 5.

#!/bin/bashfor ( ( A=1; A<=5; A++) )do

echo „$A”done

for ( ( wyr1; wyr2; wyr3 ) )do

lista_poleceń

done

Page 8: Bash 2   -----      wykład3i4

8

Pętla while

Polecenia objęte zakresem pętli while są wykonywane takdługo jak długo polecenie_testujące zwraca wartość 0(wyrażenie jest prawdziwe)

while polecenie_testujące

dolista_poleceń

done

Pętla while - przykład

Skrypt wyświetlający kolejne parametry swojego wywołania.

while polecenie_testujące

dolista_poleceń

done

#!/bin/bashwhile [ $1 ]do

echo „$1”shift

done

Page 9: Bash 2   -----      wykład3i4

9

Pętla until

Polecenia objęte zakresem pętli until są wykonywane takdługo aż polecenie_testujące zwróci wartość 0 (testowanewyrażenie przyjmie wartość prawdy)

until polecenie_testujące

dolista_poleceń

done

Pętla until - przykład

Skrypt wypisujący kolejno a, aa, aaa, aaaa.

#!/bin/bashzmienna=„”Until [ „$zmienna” == aaaa ]do

zmienna=${zmienna}aecho $zmienna

done

until polecenie_testujące

dolista_poleceń

done

Page 10: Bash 2   -----      wykład3i4

10

Polecenia break i continue

Polecenia do kontrolowania wykonania pętli. Break

przerywa działanie pętli. Continue powoduje pominięciepozostałych instrukcji z pętli i przejście do kolejnej iteracji.

Break, continue - przykład

1. Skrypt wypisujący wartości parametrów pozycyjnych domomentu napotkania parametru, którego wartość jestcyfrą.

2. Skrypt wypisujący tylko te wartości parametrówpozycyjnych, które nie są cyframi.

Polecenie break

#!/bin/bashfor Ido

case $I in[0-9] )

break #przerwanie gdy wartością zmiennej jest cyfra;;* )

echo $I;;

esacecho „To nie była cyfra”

done

Page 11: Bash 2   -----      wykład3i4

11

Polecenie continue

#!/bin/bashfor Ido

case $I in[0-9] )

continue #przejście do kolejnej iteracji, gdy wartością zmiennej jest cyfra

;;* )

echo $I;;

esacecho „To nie była cyfra”

done

Polecenie grep

Instrukcja realizuje wyszukiwanie w tekście linii pasujących dookreślonego wzorca.

grep [opcje] wzorzec [plik]

Jeśli plik nie zostanie wskazany, dane są pobierane zestandardowego wejścia.Znaki specjalne używane we wzorcach polecenia grep:. dowolny znak\ znosi znaczenie znaku specjalnego[…] dowolny znak ze zbioru, np. [ab][^…] dowolny znak spoza zbioru* zero lub więcej wystąpień wyrażenia poprzedz. *^ początek wiersza$ koniec wiersza

Page 12: Bash 2   -----      wykład3i4

12

Okna dialogowe

• Okna w skryptach shellowych, za pomocą których

można tworzyć listy wyboru, zadawać pytania i

pobierać dane od użytkownika, bądź też

informować użytkownika o przebiegu pewnych

operacji, które skrypt w danej chwili wykonuje.

dialog opcje okno_dialogowe

Okna dialogowe – rodzaje

• yesno

• menu

• inputbox

• textbox

• infobox

• checklist

• radiolist

• gauge

Page 13: Bash 2   -----      wykład3i4

13

Okna dialogowe – opcje

• --clear - czyści ekran,

• --createrc plik - można użyć tej opcji dowygenerowania przykładowego plikukonfiguracyjnego,

• --separate-output - tę opcję stosuje się przywidgetach checklist, drukuje wyjście w osobnychliniach, co umożliwia przetwarzanie uzyskanychdanych przez inny program,

• --title - tytuł, na górze okna dialogowego,

• --backtitle - podtytuł, w tle okna dialogowego,znajduje się w lewym górnym rogu ekranu.

Okno yesno

• Użytkownik otrzymuje pytanie, na które musiodpowiedzieć tak lub nie.

--yesno tekst wysokość szerokość

#!/bin/bash

dialog --title "Okno yesno" \

--yesno "Wybierz tak lub nie." 5 30

Page 14: Bash 2   -----      wykład3i4

14

Okno menu

• służy do prezentowania listy wyborów w postacimenu,

• użytkownik może wybrać tylko jedną pozycję,

• wyświetlanych jest tyle wpisów ile jest podanychjako wysokość_menu. Jeśli, jest ich więcej listabędzie przewijana.

• posiada przyciski ok i cancel.

--menu tekst wysokość szerokość wysokość_menu element opis

Okno menu – cd.

#!/bin/bash

dialog --title "Okno menu" \

--backtitle "Kurs programowania w shellu" \

--menu "Menu" 9 50 3 \

1 jeden \

2 dwa \

3 trzy \

4 cztery

Page 15: Bash 2   -----      wykład3i4

15

Okno checklist

• Podobne do menu, z tą różnicą, iż możnazaznaczać lub odznaczać wiele wpisówjednocześnie.

• Niektóre wpisy mogą być domyślnie włączane zapomocą ustawienia status na on.

• Okno checklist posiada przyciski ok i cancel.

• Na stderr drukowana jest lista elementów, którezostały wybrane.

--checklist tekst wysokość szerokość wysokość_listy

Okno checklist – cd.

#!/bin/bash

dialog --clear --separate-output --title "Okno checklist" \

--backtitle "Kurs programowania w shellu" \

--checklist \

"Tu można zaznaczać wiele wpisów naraz:" 10 70 4 \

"1" "pierwszy element" "off" \

"2" "drugi element" "off" \

"3" "trzeci element" "off" \

"Cztery" "tu zaznaczone domyślnie" "on" \

2> wynik

Page 16: Bash 2   -----      wykład3i4

16

Okno checklist – cd.

Okno radiolist

• Okno radiolist różni się od okna menu

tylko tym, że można zaznaczyć krzyżykiem(wskazanie jego statusu na on), któryelement menu zostanie wybrany.

--radiolist tekst wysokość szerokość

wysokość_listy

Page 17: Bash 2   -----      wykład3i4

17

Okno radiolist – cd.

#!/bin/bash

dialog --clear \

--title "Okno radiolist" \

--backtitle "Kurs programowania w shellu" \

--radiolist "Można zaznaczyć tylko jeden wpis:" 1070 4 \

"1" "pierwszy element" "off" \

"2" "drugi element" "off" \

"3" "trzeci element" "off" \

"4" "czwarty element" "off"

Okno inputbox

• można pobierać od użytkownika jakieś dane.

--inputbox tekst wysokość szerokość

#!/bin/bash

dialog --title "Okno inputbox" \

--inputbox "Pobieranie danych od użytkownika" 840 "Tu wpisz dane"

Page 18: Bash 2   -----      wykład3i4

18

Okno msgbox

• służy do wyświetlania komunikatów (np. informacjao tym co skrypt robi, pomoc, itp.),

• ma tylko jeden przycisk ok.

--msgbox tekst wysokość szerokość

#!/bin/bash

dialog --title "Okno msgbox" \

--msgbox "Tutaj można wstawić jakikolwiek tekst, naprzykład informacje o tym co skrypt robi, pomoc,itp." 7 45

Okno infobox

• podobne do msgbox, jednak nie ma żadnegoprzycisku,

• dialog skończy działanie po wyświetleniu danejinformacji,

• ekran nie jest czyszczony, wiadomość zostaje naekranie dopóki skrypt jej nie wyczyści,

• często stosowane gdy skrypt wykonuje jakąśdłuższą operacje, a my chcemy poinformowaćużytkownika o jej przebiegu.

--infobox tekst wysokość szerokość

Page 19: Bash 2   -----      wykład3i4

19

Okno infobox – cd.

#!/bin/bash

dialog --title "Okno infobox" \

--backtitle "Kurs programowania w shellu" \

--infobox "Tu można poinformować użytkownika oprzebiegu jakiejś operacji, która trwa dłużej,uspokoić go, że wszystko jest OK." 5 58

Okno textbox

• Wyświetla zawartość pliku tekstowego w oknie

--textbox plik wysokość szerokość

#!/bin/bash

dialog --title "Okno textbox" \

--backtitle "Kurs programowania w shellu" \

--textbox text 5 40

Page 20: Bash 2   -----      wykład3i4

20

Okno gauge

• Pokaże miarkę na dole okna. Wartości procentoweczytane są ze standardowego wejścia.

--gauge tekst wysokość szerokość procent

Koniec

Dziękuję za uwagę