SlideShare a Scribd company logo
1 of 20
Download to read offline
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.
2
Polecenia testujące i wyrażenia testowe
• Sprawdzają wartość wyrażenia testowego wyrażenie i
jeśli jest prawdziwe, zwracają wartość 0, w przeciwnym
wypadku 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ńcuchowi
informatyka
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
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
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
then
polecenia_do_wykonania
fi
polecenia_do_wykonania zostaną wykonane, gdy
polecenie_testujące zwróci wartość 0
(czyli gdy jest prawdziwe)
if polecenie_testujące
then
polecenia_do_wykonania1
else
polecenia_do_wykonania2
fi
5
Elif = else if
if polecenie_testujące1
then
polecenia_do_wykonania1
else
if polecenie_testujące2
then
polecenia_do_wykonania2
fi
fi if polecenie_testujące1
then
polecenia_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ść in
wzorzec1 )
ciąg_poleceń1
;;
wzorzec2 )
ciąg_poleceń2
;;
…
wzorzecN )
ciąg_poleceńN
;;
* )
ciąg_poleceń
;;
esac
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/bash
for A in ‘cat p1’
do
echo „Kopiowanie pliku $A”
cp $A ../kat1
done
for zmienna [in lista_słów]
do
lista_poleceń
done
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/bash
for ( ( A=1; A<=5; A++) )
do
echo „$A”
done
for ( ( wyr1; wyr2; wyr3 ) )
do
lista_poleceń
done
8
Pętla while
Polecenia objęte zakresem pętli while są wykonywane tak
długo jak długo polecenie_testujące zwraca wartość 0
(wyrażenie jest prawdziwe)
while polecenie_testujące
do
lista_poleceń
done
Pętla while - przykład
Skrypt wyświetlający kolejne parametry swojego wywołania.
while polecenie_testujące
do
lista_poleceń
done
#!/bin/bash
while [ $1 ]
do
echo „$1”
shift
done
9
Pętla until
Polecenia objęte zakresem pętli until są wykonywane tak
długo aż polecenie_testujące zwróci wartość 0 (testowane
wyrażenie przyjmie wartość prawdy)
until polecenie_testujące
do
lista_poleceń
done
Pętla until - przykład
Skrypt wypisujący kolejno a, aa, aaa, aaaa.
#!/bin/bash
zmienna=„”
Until [ „$zmienna” == aaaa ]
do
zmienna=${zmienna}a
echo $zmienna
done
until polecenie_testujące
do
lista_poleceń
done
10
Polecenia break i continue
Polecenia do kontrolowania wykonania pętli. Break
przerywa działanie pętli. Continue powoduje pominięcie
pozostałych instrukcji z pętli i przejście do kolejnej iteracji.
Break, continue - przykład
1. Skrypt wypisujący wartości parametrów pozycyjnych do
momentu napotkania parametru, którego wartość jest
cyfrą.
2. Skrypt wypisujący tylko te wartości parametrów
pozycyjnych, które nie są cyframi.
Polecenie break
#!/bin/bash
for I
do
case $I in
[0-9] )
break #przerwanie gdy wartością zmiennej jest cyfra
;;
* )
echo $I
;;
esac
echo „To nie była cyfra”
done
11
Polecenie continue
#!/bin/bash
for I
do
case $I in
[0-9] )
continue #przejście do kolejnej iteracji, gdy wartością
zmiennej jest cyfra
;;
* )
echo $I
;;
esac
echo „To nie była cyfra”
done
Polecenie grep
Instrukcja realizuje wyszukiwanie w tekście linii pasujących do
określonego wzorca.
grep [opcje] wzorzec [plik]
Jeśli plik nie zostanie wskazany, dane są pobierane ze
standardowego 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
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
13
Okna dialogowe – opcje
• --clear - czyści ekran,
• --createrc plik - można użyć tej opcji do
wygenerowania przykładowego pliku
konfiguracyjnego,
• --separate-output - tę opcję stosuje się przy
widgetach checklist, drukuje wyjście w osobnych
liniach, co umożliwia przetwarzanie uzyskanych
danych 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 musi
odpowiedzieć tak lub nie.
--yesno tekst wysokość szerokość
#!/bin/bash
dialog --title "Okno yesno" 
--yesno "Wybierz tak lub nie." 5 30
14
Okno menu
• służy do prezentowania listy wyborów w postaci
menu,
• użytkownik może wybrać tylko jedną pozycję,
• wyświetlanych jest tyle wpisów ile jest podanych
jako wysokość_menu. Jeśli, jest ich więcej lista
bę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
15
Okno checklist
• Podobne do menu, z tą różnicą, iż można
zaznaczać lub odznaczać wiele wpisów
jednocześnie.
• Niektóre wpisy mogą być domyślnie włączane za
pomocą ustawienia status na on.
• Okno checklist posiada przyciski ok i cancel.
• Na stderr drukowana jest lista elementów, które
został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
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óry
element menu zostanie wybrany.
--radiolist tekst wysokość szerokość
wysokość_listy
17
Okno radiolist – cd.
#!/bin/bash
dialog --clear 
--title "Okno radiolist" 
--backtitle "Kurs programowania w shellu" 
--radiolist "Można zaznaczyć tylko jeden wpis:" 10
70 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" 8
40 "Tu wpisz dane"
18
Okno msgbox
• służy do wyświetlania komunikatów (np. informacja
o 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, na
przykład informacje o tym co skrypt robi, pomoc,
itp." 7 45
Okno infobox
• podobne do msgbox, jednak nie ma żadnego
przycisku,
• dialog skończy działanie po wyświetleniu danej
informacji,
• ekran nie jest czyszczony, wiadomość zostaje na
ekranie 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ść
19
Okno infobox – cd.
#!/bin/bash
dialog --title "Okno infobox" 
--backtitle "Kurs programowania w shellu" 
--infobox "Tu można poinformować użytkownika o
przebiegu 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
20
Okno gauge
• Pokaże miarkę na dole okna. Wartości procentowe
czytane są ze standardowego wejścia.
--gauge tekst wysokość szerokość procent
Koniec
Dziękuję za uwagę

More Related Content

Viewers also liked

Conclusiones plagio
Conclusiones plagio Conclusiones plagio
Conclusiones plagio jlguzmanh
 
Единый Приём документов
Единый Приём документовЕдиный Приём документов
Единый Приём документовAleksandr Bulekov
 
Programa do MFA
Programa do MFAPrograma do MFA
Programa do MFAbart3881
 
AMD & Grid Technology Enabling Pervasive Computing
AMD & Grid Technology Enabling Pervasive ComputingAMD & Grid Technology Enabling Pervasive Computing
AMD & Grid Technology Enabling Pervasive ComputingQuentin Fennessy
 
Numeral (O que acontece na escola) – Thaeme e Thiago – Paródias Pedagógicas -...
Numeral (O que acontece na escola) – Thaeme e Thiago – Paródias Pedagógicas -...Numeral (O que acontece na escola) – Thaeme e Thiago – Paródias Pedagógicas -...
Numeral (O que acontece na escola) – Thaeme e Thiago – Paródias Pedagógicas -...Alex Santos
 
Preposições – Se ela dança eu danço – Mc Leozinho - Paródias Pedagógicas - Pr...
Preposições – Se ela dança eu danço – Mc Leozinho - Paródias Pedagógicas - Pr...Preposições – Se ela dança eu danço – Mc Leozinho - Paródias Pedagógicas - Pr...
Preposições – Se ela dança eu danço – Mc Leozinho - Paródias Pedagógicas - Pr...Alex Santos
 
CONTABILIDAD ELECTRONICA 2017
CONTABILIDAD ELECTRONICA 2017CONTABILIDAD ELECTRONICA 2017
CONTABILIDAD ELECTRONICA 2017MGMCCONTADORES
 
Versos livres - Alunos do 6o Anos - EE Prof. Joao Ferreira dos Santos - 2014 ...
Versos livres - Alunos do 6o Anos - EE Prof. Joao Ferreira dos Santos - 2014 ...Versos livres - Alunos do 6o Anos - EE Prof. Joao Ferreira dos Santos - 2014 ...
Versos livres - Alunos do 6o Anos - EE Prof. Joao Ferreira dos Santos - 2014 ...Alex Santos
 

Viewers also liked (11)

Conclusiones plagio
Conclusiones plagio Conclusiones plagio
Conclusiones plagio
 
cv
cvcv
cv
 
Единый Приём документов
Единый Приём документовЕдиный Приём документов
Единый Приём документов
 
Programa do MFA
Programa do MFAPrograma do MFA
Programa do MFA
 
AMD & Grid Technology Enabling Pervasive Computing
AMD & Grid Technology Enabling Pervasive ComputingAMD & Grid Technology Enabling Pervasive Computing
AMD & Grid Technology Enabling Pervasive Computing
 
Numeral (O que acontece na escola) – Thaeme e Thiago – Paródias Pedagógicas -...
Numeral (O que acontece na escola) – Thaeme e Thiago – Paródias Pedagógicas -...Numeral (O que acontece na escola) – Thaeme e Thiago – Paródias Pedagógicas -...
Numeral (O que acontece na escola) – Thaeme e Thiago – Paródias Pedagógicas -...
 
Preposições – Se ela dança eu danço – Mc Leozinho - Paródias Pedagógicas - Pr...
Preposições – Se ela dança eu danço – Mc Leozinho - Paródias Pedagógicas - Pr...Preposições – Se ela dança eu danço – Mc Leozinho - Paródias Pedagógicas - Pr...
Preposições – Se ela dança eu danço – Mc Leozinho - Paródias Pedagógicas - Pr...
 
CONTABILIDAD ELECTRONICA 2017
CONTABILIDAD ELECTRONICA 2017CONTABILIDAD ELECTRONICA 2017
CONTABILIDAD ELECTRONICA 2017
 
Agama ppt 6 sesok
Agama ppt 6 sesokAgama ppt 6 sesok
Agama ppt 6 sesok
 
Versos livres - Alunos do 6o Anos - EE Prof. Joao Ferreira dos Santos - 2014 ...
Versos livres - Alunos do 6o Anos - EE Prof. Joao Ferreira dos Santos - 2014 ...Versos livres - Alunos do 6o Anos - EE Prof. Joao Ferreira dos Santos - 2014 ...
Versos livres - Alunos do 6o Anos - EE Prof. Joao Ferreira dos Santos - 2014 ...
 
Guerra colonial (1)
Guerra colonial (1)Guerra colonial (1)
Guerra colonial (1)
 

Similar to Bash 2 ----- wykład3i4

Bash 1 ----- wykład2i3
Bash 1   -----     wykład2i3Bash 1   -----     wykład2i3
Bash 1 ----- wykład2i3kkk112
 
KraQA VIII - Techniki projektowania testów
KraQA VIII - Techniki projektowania testów KraQA VIII - Techniki projektowania testów
KraQA VIII - Techniki projektowania testów kraqa
 
Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)
Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)
Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)Codesushi.co (CODESUSHI LLC)
 
4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski
4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski
4Developers 2015: Property-based testing w języku Scala - Paweł GrajewskiPROIDEA
 
Python szybki start
Python   szybki startPython   szybki start
Python szybki startSages
 
Pułapki liczb zmiennoprzecinkowych
Pułapki liczb zmiennoprzecinkowychPułapki liczb zmiennoprzecinkowych
Pułapki liczb zmiennoprzecinkowychAdam Sawicki
 

Similar to Bash 2 ----- wykład3i4 (7)

Bash 1 ----- wykład2i3
Bash 1   -----     wykład2i3Bash 1   -----     wykład2i3
Bash 1 ----- wykład2i3
 
KraQA VIII - Techniki projektowania testów
KraQA VIII - Techniki projektowania testów KraQA VIII - Techniki projektowania testów
KraQA VIII - Techniki projektowania testów
 
Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)
Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)
Warsztaty: Podstawy PHP - część 2 - omówienie składni języka PHP (wersja 7)
 
4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski
4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski
4Developers 2015: Property-based testing w języku Scala - Paweł Grajewski
 
Podstawy PHP
Podstawy PHPPodstawy PHP
Podstawy PHP
 
Python szybki start
Python   szybki startPython   szybki start
Python szybki start
 
Pułapki liczb zmiennoprzecinkowych
Pułapki liczb zmiennoprzecinkowychPułapki liczb zmiennoprzecinkowych
Pułapki liczb zmiennoprzecinkowych
 

Bash 2 ----- wykład3i4

  • 1. 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.
  • 2. 2 Polecenia testujące i wyrażenia testowe • Sprawdzają wartość wyrażenia testowego wyrażenie i jeśli jest prawdziwe, zwracają wartość 0, w przeciwnym wypadku 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ńcuchowi informatyka 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
  • 3. 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
  • 4. 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 then polecenia_do_wykonania fi polecenia_do_wykonania zostaną wykonane, gdy polecenie_testujące zwróci wartość 0 (czyli gdy jest prawdziwe) if polecenie_testujące then polecenia_do_wykonania1 else polecenia_do_wykonania2 fi
  • 5. 5 Elif = else if if polecenie_testujące1 then polecenia_do_wykonania1 else if polecenie_testujące2 then polecenia_do_wykonania2 fi fi if polecenie_testujące1 then polecenia_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ść in wzorzec1 ) ciąg_poleceń1 ;; wzorzec2 ) ciąg_poleceń2 ;; … wzorzecN ) ciąg_poleceńN ;; * ) ciąg_poleceń ;; esac
  • 6. 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/bash for A in ‘cat p1’ do echo „Kopiowanie pliku $A” cp $A ../kat1 done for zmienna [in lista_słów] do lista_poleceń done
  • 7. 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/bash for ( ( A=1; A<=5; A++) ) do echo „$A” done for ( ( wyr1; wyr2; wyr3 ) ) do lista_poleceń done
  • 8. 8 Pętla while Polecenia objęte zakresem pętli while są wykonywane tak długo jak długo polecenie_testujące zwraca wartość 0 (wyrażenie jest prawdziwe) while polecenie_testujące do lista_poleceń done Pętla while - przykład Skrypt wyświetlający kolejne parametry swojego wywołania. while polecenie_testujące do lista_poleceń done #!/bin/bash while [ $1 ] do echo „$1” shift done
  • 9. 9 Pętla until Polecenia objęte zakresem pętli until są wykonywane tak długo aż polecenie_testujące zwróci wartość 0 (testowane wyrażenie przyjmie wartość prawdy) until polecenie_testujące do lista_poleceń done Pętla until - przykład Skrypt wypisujący kolejno a, aa, aaa, aaaa. #!/bin/bash zmienna=„” Until [ „$zmienna” == aaaa ] do zmienna=${zmienna}a echo $zmienna done until polecenie_testujące do lista_poleceń done
  • 10. 10 Polecenia break i continue Polecenia do kontrolowania wykonania pętli. Break przerywa działanie pętli. Continue powoduje pominięcie pozostałych instrukcji z pętli i przejście do kolejnej iteracji. Break, continue - przykład 1. Skrypt wypisujący wartości parametrów pozycyjnych do momentu napotkania parametru, którego wartość jest cyfrą. 2. Skrypt wypisujący tylko te wartości parametrów pozycyjnych, które nie są cyframi. Polecenie break #!/bin/bash for I do case $I in [0-9] ) break #przerwanie gdy wartością zmiennej jest cyfra ;; * ) echo $I ;; esac echo „To nie była cyfra” done
  • 11. 11 Polecenie continue #!/bin/bash for I do case $I in [0-9] ) continue #przejście do kolejnej iteracji, gdy wartością zmiennej jest cyfra ;; * ) echo $I ;; esac echo „To nie była cyfra” done Polecenie grep Instrukcja realizuje wyszukiwanie w tekście linii pasujących do określonego wzorca. grep [opcje] wzorzec [plik] Jeśli plik nie zostanie wskazany, dane są pobierane ze standardowego 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
  • 12. 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
  • 13. 13 Okna dialogowe – opcje • --clear - czyści ekran, • --createrc plik - można użyć tej opcji do wygenerowania przykładowego pliku konfiguracyjnego, • --separate-output - tę opcję stosuje się przy widgetach checklist, drukuje wyjście w osobnych liniach, co umożliwia przetwarzanie uzyskanych danych 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 musi odpowiedzieć tak lub nie. --yesno tekst wysokość szerokość #!/bin/bash dialog --title "Okno yesno" --yesno "Wybierz tak lub nie." 5 30
  • 14. 14 Okno menu • służy do prezentowania listy wyborów w postaci menu, • użytkownik może wybrać tylko jedną pozycję, • wyświetlanych jest tyle wpisów ile jest podanych jako wysokość_menu. Jeśli, jest ich więcej lista bę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
  • 15. 15 Okno checklist • Podobne do menu, z tą różnicą, iż można zaznaczać lub odznaczać wiele wpisów jednocześnie. • Niektóre wpisy mogą być domyślnie włączane za pomocą ustawienia status na on. • Okno checklist posiada przyciski ok i cancel. • Na stderr drukowana jest lista elementów, które został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
  • 16. 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óry element menu zostanie wybrany. --radiolist tekst wysokość szerokość wysokość_listy
  • 17. 17 Okno radiolist – cd. #!/bin/bash dialog --clear --title "Okno radiolist" --backtitle "Kurs programowania w shellu" --radiolist "Można zaznaczyć tylko jeden wpis:" 10 70 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" 8 40 "Tu wpisz dane"
  • 18. 18 Okno msgbox • służy do wyświetlania komunikatów (np. informacja o 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, na przykład informacje o tym co skrypt robi, pomoc, itp." 7 45 Okno infobox • podobne do msgbox, jednak nie ma żadnego przycisku, • dialog skończy działanie po wyświetleniu danej informacji, • ekran nie jest czyszczony, wiadomość zostaje na ekranie 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ść
  • 19. 19 Okno infobox – cd. #!/bin/bash dialog --title "Okno infobox" --backtitle "Kurs programowania w shellu" --infobox "Tu można poinformować użytkownika o przebiegu 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
  • 20. 20 Okno gauge • Pokaże miarkę na dole okna. Wartości procentowe czytane są ze standardowego wejścia. --gauge tekst wysokość szerokość procent Koniec Dziękuję za uwagę