Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00323 005389 13252875 na godz. na dobę w sumie
Bash. Praktyczne skrypty - książka
Bash. Praktyczne skrypty - książka
Autor: Liczba stron: 296
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-1489-4 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> inne - programowanie
Porównaj ceny (książka, ebook, audiobook).

Wykorzystaj Bash do swoich celów!

Powłoka Bash jest bardzo wygodnym narzędziem, pozwalającym na automatyzację wielu różnych czynności, kłopotliwych dla administratora systemu. Jest też uniwersalna: choć powstała jako powłoka dla systemów uniksowych, można używać jej także na komputerach wyposażonych w Windows. Jeśli chcesz sprawdzić, do czego warto użyć Basha, i zobaczyć, jak działa powłoka w konkretnych sytuacjach, koniecznie zajrzyj do tej książki. W przystępny, klarowny sposób omawia ona podstawowe zagadnienia związane z Bashem, a nade wszystko zawiera praktyczne, gotowe skrypty i liczne ćwiczenia.

W książce znajdziesz zestawy instrukcji pozwalających efektywnie wyszukiwać w dużej bazie określone pliki, sortować, wykonywać skomplikowane obliczenia, generować zbiory liczb, stosować funkcje rekurencyjne i sprawdzać poprawność konfiguracji sieci komputerowej. Każdy rozdział rozpoczyna się od krótkiego opisu konkretnego problemu, który można rozwiązać dzięki skryptowi Basha. Taki układ na pewno docenią wszyscy, którzy nie mają zbyt wiele czasu na poznawanie teorii, gdy natychmiast potrzebna jest im praktyka. Sprawdź, zastosuj i oszczędź swój czas!

Niech Twój komputer działa za Ciebie!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Redaktor prowadzący: Michał Mrowiec Projekt okładki: Studio Gravite / Olsztyn Obarek, Pokoński, Pazdrijowski, Zaprucki Fotografia na okładce została wykorzystana za zgodą Shutterstock.com Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/bashps Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Kody źródłowe wybranych przykładów dostępne są pod adresem: ftp://ftp.helion.pl/przyklady/bashps.zip ISBN: 978-83-283-1489-4 Copyright © Helion 2015 Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis tre(cid:264)ci Rozdzia(cid:228) 1. Wprowadzenie .................................................................................. 9 Jak dzia(cid:225)a Bash? ............................................................................................................. 10 Za(cid:225)o(cid:298)enia tej ksi(cid:261)(cid:298)ki ....................................................................................................... 11 Uk(cid:225)ad rozdzia(cid:225)ów ..................................................................................................... 11 Konwencje programistyczne .................................................................................... 12 Instalacja i konfiguracja (cid:286)rodowiska pracy ..................................................................... 12 OpenSUSE 13.2 ....................................................................................................... 12 Windows 7 ............................................................................................................... 14 Rozdzia(cid:228) 2. Powitanie ...................................................................................... 19 Zmienne i ich warto(cid:286)ci ................................................................................................... 25 Znak zach(cid:266)ty ................................................................................................................... 27 Polecenie echo — wy(cid:286)wietlenie tekstu na ekranie ......................................................... 30 Stringi i ich (cid:225)(cid:261)czenie ....................................................................................................... 30 Polecenie cd — bie(cid:298)(cid:261)ca (cid:286)cie(cid:298)ka i jej zmiana .................................................................. 33 Ustalanie bie(cid:298)(cid:261)cej (cid:286)cie(cid:298)ki, czyli krótka wzmianka o zmiennej $PWD ..................... 33 Zmiana bie(cid:298)(cid:261)cej (cid:286)cie(cid:298)ki ............................................................................................ 33 Polecenie chmod — zmiana uprawnie(cid:276) plików i katalogów .......................................... 33 Tryb interaktywny/konwersacyjny i wsadowy ............................................................... 36 Polecenie read — pobranie danych od u(cid:298)ytkownika ...................................................... 37 Rozdzia(cid:228) 3. U(cid:264)cisk d(cid:228)oni ................................................................................... 39 Rozdzielenie instrukcji i polece(cid:276) .................................................................................... 42 (cid:285)rednik i przetwarzanie sekwencyjne ....................................................................... 42 Ampersand i przetwarzanie równoleg(cid:225)e ................................................................... 43 Instrukcja warunkowa if ................................................................................................. 44 Operator porównania stringów (i nie tylko ich) .............................................................. 49 Warto(cid:286)ci logiczne true/false, czyli brak typu w Bashu ............................................. 50 Nawiasy kwadratowe w instrukcjach warunkowych ...................................................... 51 Brak nawiasów ......................................................................................................... 51 Pojedyncze nawiasy ................................................................................................. 56 Podwójne nawiasy kwadratowe ............................................................................... 58 Polecenie type — rozpoznawanie typu ........................................................................... 60 Poleć książkęKup książkę 6 Bash. Praktyczne skrypty Rozdzia(cid:228) 4. Rozpoznanie p(cid:228)ci ............................................................................ 63 Parametry wej(cid:286)ciowe ...................................................................................................... 68 Operacje na stringach i notacja klamrowa ...................................................................... 71 Konkatenacja a zmienne specjalne ........................................................................... 72 Dzielenie ci(cid:261)gów znakowych na mniejsze ............................................................... 73 Podwójne rozwini(cid:266)cie zmiennej ............................................................................... 74 Operatory logiczne ......................................................................................................... 75 Alternatywa .............................................................................................................. 75 Negacja ..................................................................................................................... 76 Koniunkcja ............................................................................................................... 77 Notacja z pojedynczymi nawiasami kwadratowymi ................................................. 78 Poprawka drobnego b(cid:225)(cid:266)du .............................................................................................. 80 Rozdzia(cid:228) 5. Detektor liczb parzystych i nieparzystych ........................................ 85 Zmienne liczbowe .......................................................................................................... 87 Wyra(cid:298)enia matematyczne w notacji z okr(cid:261)g(cid:225)ymi nawiasami ................................... 88 Wyra(cid:298)enia matematyczne z poleceniem let .............................................................. 91 Wyra(cid:298)enia matematyczne z poleceniem expr ........................................................... 92 Polecenie declare — oznaczenie typu dla zmiennej ....................................................... 93 Rozdzia(cid:228) 6. Generowanie zbiorów liczb spe(cid:228)niaj(cid:241)cych kryteria podzielno(cid:264)ci ......... 97 P(cid:266)tla while ...................................................................................................................... 99 Wyra(cid:298)enia matematyczne w instrukcjach steruj(cid:261)cych if oraz p(cid:266)tli while ..................... 101 Rozdzia(cid:228) 7. Silnia ........................................................................................... 103 P(cid:266)tla for ........................................................................................................................ 104 Zapis arytmetyczny ................................................................................................ 104 i++ oraz i--, czyli skrócony zapis inkrementacji/dekrementacji ................................... 107 Rozdzia(cid:228) 8. Analiza zbioru plików pod k(cid:241)tem daty ich ostatniej modyfikacji ...... 109 P(cid:266)tla for (cid:650) zapis operuj(cid:261)cy na zbiorach ...................................................................... 112 Operatory logiczne poza instrukcj(cid:261) steruj(cid:261)c(cid:261) if ............................................................ 113 Wyra(cid:298)enia Basha .......................................................................................................... 116 Notacja $() .............................................................................................................. 116 Notacja z grawisami ............................................................................................... 117 Polecenie eval ......................................................................................................... 118 Uwaga, niebezpiecze(cid:276)stwo! ................................................................................... 119 Polecenie stat ................................................................................................................ 121 Polecenie date ............................................................................................................... 122 Konwersja z formatu czytelnego dla cz(cid:225)owieka do czasu uniksowego ................... 123 Konwersja z czasu uniksowego do formatu czytelnego dla cz(cid:225)owieka ................... 124 Rozdzia(cid:228) 9. Czyszczenie pliku tekstowego ze zb(cid:246)dnych pustych wierszy ........... 127 Operatory jednoargumentowe polecenia test w blokach warunkowych ....................... 130 Instrukcja continue ....................................................................................................... 131 Polecenie cat ................................................................................................................. 133 Strumienie i ich przekierowanie ................................................................................... 135 Przekierowanie strumienia wyj(cid:286)cia do pliku .......................................................... 136 Przekierowanie strumienia b(cid:225)(cid:266)dów do pliku ........................................................... 137 Przekierowanie strumienia wyj(cid:286)ciowego i b(cid:225)(cid:266)dów do ró(cid:298)nych plików .................. 137 Przekierowanie obu strumieni wyj(cid:286)ciowych do tego samego pliku ....................... 138 Przekierowanie strumienia b(cid:225)(cid:266)dów do strumienia wyj(cid:286)cia i odwrotnie .................. 139 Przekierowanie na strumie(cid:276) wej(cid:286)ciowy .................................................................. 139 Poleć książkęKup książkę Spis tre(cid:264)ci 7 Rozdzia(cid:228) 10. Sortowanie liczb ........................................................................... 145 P(cid:266)tla w p(cid:266)tli .................................................................................................................. 149 Pobranie wszystkich parametrów wej(cid:286)ciowych programu ........................................... 151 Zmienne tablicowe ....................................................................................................... 151 Inicjalizacja tablicy ................................................................................................ 152 Zapisywanie warto(cid:286)ci w tablicach .......................................................................... 153 Pobieranie warto(cid:286)ci z tablic .................................................................................... 154 Tablice asocjacyjne, czyli klucze tekstowe zamiast indeksów liczbowych ............ 155 Wypisanie wszystkich warto(cid:286)ci tablicy .................................................................. 156 Pobranie ilo(cid:286)ci elementów znajduj(cid:261)cych si(cid:266) w tablicy ........................................... 157 Przetworzenie ka(cid:298)dego elementu tablicy w p(cid:266)tli .................................................... 157 Rozdzia(cid:228) 11. System rezerwacji miejsc w sali kinowej ....................................... 161 Instrukcja break ............................................................................................................ 164 Blok warunkowy case jako alternatywa dla if .............................................................. 166 Dopasowanie do wielu warto(cid:286)ci w bloku case ....................................................... 168 Eskalacja wykonania na nast(cid:266)pny blok w case ....................................................... 169 Funkcje ......................................................................................................................... 170 Deklaracja funkcji .................................................................................................. 173 Wywo(cid:225)ywanie funkcji ............................................................................................ 174 Funkcje maj(cid:261) priorytet ............................................................................................ 174 Funkcje maj(cid:261) pierwsze(cid:276)stwo .................................................................................. 175 Funkcje mog(cid:261) si(cid:266) nadpisywa(cid:252) ................................................................................ 176 Parametry wej(cid:286)ciowe .............................................................................................. 177 Zmienne w funkcjach ............................................................................................. 178 Wywo(cid:225)anie funkcji w wyra(cid:298)eniu $() Basha ............................................................ 183 Zwracanie i pobieranie wyników funkcji ............................................................... 185 Hermetyzacja funkcji ............................................................................................. 187 Przekazywanie tablic w parametrach do funkcji .................................................... 192 Polecenie source ........................................................................................................... 196 Rozdzia(cid:228) 12. Sprawdzanie poprawno(cid:264)ci konfiguracji sieci komputerowej ............ 199 Wprowadzenie teoretyczne ........................................................................................... 202 Systemy liczbowe ................................................................................................... 202 Sie(cid:252) komputerowa .................................................................................................. 206 Sta(cid:225)e, czyli zmienne, których nie da si(cid:266) zmieni(cid:252) .......................................................... 207 Polecenie readonly ................................................................................................. 208 Polecenie declare .................................................................................................... 208 Operatory bitowe .......................................................................................................... 208 Przesuni(cid:266)cia bitowe w lewo ................................................................................... 209 Przesuni(cid:266)cia bitowe w prawo ................................................................................. 210 Suma bitowa ........................................................................................................... 211 Iloczyn bitowy ........................................................................................................ 212 Notacja klamrowa — podmiana zawarto(cid:286)ci ci(cid:261)gu znakowego na inn(cid:261) ........................ 213 Rozdzia(cid:228) 13. Ci(cid:241)gi Fibonacciego ...................................................................... 215 Funkcje rekurencyjne w programowaniu ...................................................................... 218 Wydajno(cid:286)(cid:252) funkcji rekurencyjnych ........................................................................ 218 Brak ograniczenia w ilo(cid:286)ci wywo(cid:225)anych funkcji rekurencyjnych .......................... 219 Wydajno(cid:286)(cid:252) rekurencyjnych funkcji w ci(cid:261)gach Fibonacciego ....................................... 219 Wyk(cid:225)adnicza z(cid:225)o(cid:298)ono(cid:286)(cid:252) obliczeniowa .................................................................... 220 Liniowa z(cid:225)o(cid:298)ono(cid:286)(cid:252) obliczeniowa ............................................................................ 222 Polecenie time ........................................................................................................ 224 Poleć książkęKup książkę 8 Bash. Praktyczne skrypty Rozdzia(cid:228) 14. Prosty kalkulator ze wsparciem dla arytmetyki zmiennoprzecinkowej ............................................. 229 P(cid:266)tla until ...................................................................................................................... 233 Potoki ........................................................................................................................... 234 Polecenie printf zamiast echo ....................................................................................... 236 Liczby w wyniku .................................................................................................... 237 Konwersja pomi(cid:266)dzy systemami liczbowymi ........................................................ 237 Ci(cid:261)gi znaków w wyniku ......................................................................................... 239 Modyfikatory .......................................................................................................... 239 Program bc ................................................................................................................... 241 Arytmetyka zmiennoprzecinkowa .......................................................................... 241 Precyzja liczb zmiennoprzecinkowych ................................................................... 242 Konwersja pomi(cid:266)dzy systemami liczbowymi ........................................................ 242 Rozdzia(cid:228) 15. System rezerwacji miejsc w multipleksie kinowym ........................ 245 Tablice wielowymiarowe ............................................................................................. 248 P(cid:266)tla select .................................................................................................................... 248 Rozdzia(cid:228) 16. Rekurencyjne wyszukiwanie dat w plikach .................................... 251 Polecenie grep .............................................................................................................. 254 Wyra(cid:298)enia regularne ..................................................................................................... 255 Znaki specjalne ....................................................................................................... 255 Alternatywa we wzorcach ...................................................................................... 255 Atomy ..................................................................................................................... 257 Zakresy znaków ..................................................................................................... 258 Wielokrotne i opcjonalne dopasowania .................................................................. 260 Rozszerzenia perlowe ............................................................................................. 263 Podsumowanie ....................................................................................................... 266 Polecenie sort ............................................................................................................... 266 Tu masz string, czyli wyra(cid:298)enie ............................................................................ 268 Rozdzia(cid:228) 17. Rozwi(cid:241)zania (cid:232)wicze(cid:254) .................................................................... 271 (cid:251)wiczenie 2.1 ............................................................................................................... 271 (cid:251)wiczenie 2.2 ............................................................................................................... 272 (cid:251)wiczenie 3.1 ............................................................................................................... 272 (cid:251)wiczenie 4.1 ............................................................................................................... 273 (cid:251)wiczenie 4.2 ............................................................................................................... 273 (cid:251)wiczenie 5.1 ............................................................................................................... 274 (cid:251)wiczenie 6.1 ............................................................................................................... 274 (cid:251)wiczenie 6.2 ............................................................................................................... 275 (cid:251)wiczenie 7.1 ............................................................................................................... 276 (cid:251)wiczenie 8.1 ............................................................................................................... 276 (cid:251)wiczenie 9.1 ............................................................................................................... 276 (cid:251)wiczenie 10.1 ............................................................................................................. 277 (cid:251)wiczenie 10.2 ............................................................................................................. 277 (cid:251)wiczenie 10.3 ............................................................................................................. 278 (cid:251)wiczenie 11.1 ............................................................................................................. 278 (cid:251)wiczenie 12.1 ............................................................................................................. 279 (cid:251)wiczenie 12.2 ............................................................................................................. 280 (cid:251)wiczenie 13.1 ............................................................................................................. 282 (cid:251)wiczenie 13.2 ............................................................................................................. 282 (cid:251)wiczenie 13.3 ............................................................................................................. 283 (cid:251)wiczenie 14.1 ............................................................................................................. 283 (cid:251)wiczenie 15.1 ............................................................................................................. 284 (cid:251)wiczenie 16.1 ............................................................................................................. 286 Skorowidz .................................................................................... 287 Poleć książkęKup książkę Rozdzia(cid:228) 7. Silnia Od kilku rozdzia(cid:225)ów omawiamy kolejne elementy Basha na podstawie przyk(cid:225)adów matematycznych. Mo(cid:298)e si(cid:266) to wydawa(cid:252) troch(cid:266) nudne w porównaniu do naszych pierwszych lekcji, które dotyczy(cid:225)y programowania na przyk(cid:225)adzie rad dotycz(cid:261)cych dobrego zachowania. Zapewniam jednak, (cid:298)e odrobina matematyki jeszcze nikomu nie zaszkodzi(cid:225)a, a pozwala ona tworzy(cid:252) dobrane pod wzgl(cid:266)dem dydaktycznym przyk(cid:225)ady. Na potrzeby tego rozdzia(cid:225)u uczyni(cid:266) ma(cid:225)y wyj(cid:261)tek i zaczniemy od ma(cid:225)ego wprowa- dzenia teoretycznego, poniewa(cid:298) nie ka(cid:298)dy Czytelnik musi wiedzie(cid:252) lub pami(cid:266)ta(cid:252), czym jest silnia. Jest ona prostym dzia(cid:225)aniem matematycznym i zapisuje si(cid:266) j(cid:261) w postaci n!, gdzie n to dowolna liczba naturalna. Dzia(cid:225)anie to polega na obliczeniu iloczynu kolejnych liczb naturalnych, które s(cid:261) wi(cid:266)ksze od 0 i nie wi(cid:266)ksze on n, natomiast silnia z 0 z definicji wynosi 1, czyli: 0! = 15 1! = 1 2! = 1 · 2 = 2 3! = 1 · 2 · 3 = 6 4! = 1 · 2 · 3 · 4 = 24 5! = 1 · 2 · 3 · 4 · 5 = 120 Przyk(cid:225)ad realizacji tego zadania w Bashu przedstawiam w listingu 7.1. Listing 7.1. Silnia — przyk(cid:225)ad realizacji w Bashu #!/usr/bin/bash i=1 #nie-zero bo tworzy iloczyn wynik=1 # nie-zero bo tworzy iloczyn while (($i = $1)) do wynik=$(($wynik * $i)) i=$(($i + 1)) done echo $wynik Poleć książkęKup książkę 104 Bash. Praktyczne skrypty W skrypcie z listingu 7.1 przedstawiam realizacj(cid:266) zadania matematycznego przy u(cid:298)y- ciu jedynie znanych nam ju(cid:298) mechanizmów i technik. W listingu 7.2 natomiast zo- sta(cid:225)o wykonane to samo zadanie z zastosowaniem nieomówionej jeszcze notacji. Listing 7.2. Silnia — przyk(cid:225)ad realizacji z u(cid:298)yciem p(cid:266)tli for w j(cid:266)zyku Bash #!/usr/bin/bash wynik=1 # nie-zero bo tworzy iloczyn for ((i=1; $i = $1; i=$i+1)) do wynik=$(($wynik * $i)) done echo $wynikecho $wynik Listing 7.2 przedstawia alternatywn(cid:261) wersj(cid:266) skryptu z listingu 7.1. Spis nowo(cid:286)ci za- wiera tabela 7.1. Tabela 7.1. Nowe terminy z listingu 7.2 Termin for (( ; ; )) do done i++ Opis For to s(cid:225)owo kluczowe pow(cid:225)oki Bash, odpowiednik while. Dzia(cid:225)a dok(cid:225)adnie tak samo, ró(cid:298)ni si(cid:266) jednak zapisem, gdy(cid:298) jego warunek jest w tym wypadku wyra(cid:298)enia matematycznego podzielony na trzy sekcje, które zostan(cid:261) omówione w cz(cid:266)(cid:286)ci teoretycznej. Mo(cid:298)liwe jest jeszcze (cid:225)(cid:261)czenie p(cid:266)tli for ze zbiorami. To równie(cid:298) omówi(cid:266) w cz(cid:266)(cid:286)ci teoretycznej. S(cid:225)owo kluczowe pow(cid:225)oki Bash. Rozpoczyna p(cid:266)tl(cid:266) for, tak samo jak while. S(cid:225)owo kluczowe pow(cid:225)oki Bash. Ko(cid:276)czy p(cid:266)tl(cid:266) for, tak samo jak while. Skrócony zapis dla zwi(cid:266)kszenia licznika zmiennej o 1. Zostanie omówiony bardziej szczegó(cid:225)owo w rozdziale teoretycznym. Schemat blokowy dla skryptu z listingu 7.2 przedstawiam na rysunku 7.1. P(cid:246)tla for W Bashu istnieje kilka rodzajów instrukcji steruj(cid:261)cych, które oferuj(cid:261) wielokrotne wy- konanie bloku kodu (tzw. p(cid:266)tle). Jedn(cid:261) z nich jest p(cid:266)tla for, która poza skróconym zapisem nie ró(cid:298)ni si(cid:266) niczym w porównaniu do p(cid:266)tli while. Zapis arytmetyczny P(cid:266)tla for obs(cid:225)uguje kilka mo(cid:298)liwo(cid:286)ci dzia(cid:225)ania. Jedn(cid:261) z nich jest notacja wykorzystuj(cid:261)ca wyra(cid:298)enia arytmetyczne. Ogólny zapis p(cid:266)tli w postaci pseudokodu zamieszczam poni(cid:298)ej: dla (( instrukcje startowe; warunek wykonania p(cid:250)tli; instrukcje po ka(cid:318)dym przebiegu)) wykonaj # blok p(cid:266)tli, który powinien zosta(cid:252) wykonany, je(cid:286)li warunek wykonania jest spe(cid:225)niony koniec Poleć książkęKup książkę Rozdzia(cid:228) 7. (cid:105) Silnia Rysunek 7.1. Schemat blokowy dla skryptu z listingu 7.2 105 Na rysunku 7.2. znajduje si(cid:266) analiza porównawcza p(cid:266)tli while i for, której dokona(cid:225)em na przyk(cid:225)adzie skryptu z listingu 6.1 i stanowi(cid:261)cego jego alternatywn(cid:261) wersj(cid:266) skryptu z listingu 7.3. Listing 7.3. Skrypt z listingu 6.1 przepisany na wersj(cid:266) z u(cid:298)yciem p(cid:266)tli for #!/usr/bin/bash min=$1 max=$2 modulo=$3 i=$min for ((i=$min; $i =$max; i++)) do reszta=$(($i $modulo)) if [[ $reszta == 0 ]] then echo $i fi done Poleć książkęKup książkę 106 Bash. Praktyczne skrypty Rysunek 7.2. Analiza porównawcza skryptu z listingu 6.1 (po lewej) i skryptu z listingu 7.3 (po prawej). Dotyczy ona ró(cid:298)nic wyst(cid:266)puj(cid:261)cych mi(cid:266)dzy instrukcjami steruj(cid:261)cymi for i while Na rysunku 7.2 wida(cid:252) ró(cid:298)nice w zapisie mi(cid:266)dzy obiema p(cid:266)tlami. W mojej ocenie p(cid:266)tla while jest du(cid:298)o bardziej czytelna dla pocz(cid:261)tkuj(cid:261)cych programistów i spe(cid:225)nia w zasa- dzie wszystkie wymagania, realizuj(cid:261)c te same zadania co p(cid:266)tla for w zapisie arytme- tycznym, jednak(cid:298)e w inny sposób. Jedyn(cid:261) zalet(cid:261), która przemawia za p(cid:266)tl(cid:261) for, jest liczba linii kodu potrzebnych do realizacji tego samego zadania. Musz(cid:266) jednak przyzna(cid:252), (cid:298)e z biegiem czasu coraz cz(cid:266)(cid:286)ciej korzystam z p(cid:266)tli for zamiast while, cho(cid:252) nie potra- fi(cid:266) logicznie uzasadni(cid:252) tego wyboru. Warto jeszcze wspomnie(cid:252), (cid:298)e instrukcje startowe, warunkowe i ko(cid:276)cowe przebiegu p(cid:266)tli for s(cid:261) instrukcjami opcjonalnymi. Oznacza to, (cid:298)e nie musimy ich wpisywa(cid:252). Musimy jedynie pami(cid:266)ta(cid:252) o oddzielaj(cid:261)cych je (cid:286)rednikach. Mo(cid:298)e to pos(cid:225)u(cid:298)y(cid:252) do two- rzenia niesko(cid:276)czonych p(cid:266)tli, co przedstawiam w listingu 7.4. Listing 7.4. Niesko(cid:276)czona p(cid:266)tla z u(cid:298)yciem p(cid:266)tli for #!/usr/bin/bash for ((;;)) do echo Wykonuj(cid:250) si(cid:250) dopóty, dopóki mnie nie zamkniesz done Z pozoru taka instrukcja jest nieprzydatna, poniewa(cid:298) do momentu, kiedy sami nie za- mkniemy programu, na przyk(cid:225)ad u(cid:298)ywaj(cid:261)c skrótu CTRL+C, program nie zako(cid:276)czy dzia(cid:225)ania. Wbrew pierwszemu wra(cid:298)eniu ma to swoje zastosowanie, ale o tym opo- wiem w kolejnych rozdzia(cid:225)ach. Ca(cid:225)y zapis p(cid:266)tli for w wersji arytmetycznej (poza cz(cid:266)(cid:286)ci(cid:261) b(cid:266)d(cid:261)c(cid:261) samym wyra(cid:298)e- niem) z(cid:225)o(cid:298)ony jest ze s(cid:225)ów kluczowych: $ type -a for do done (( )) for jest s(cid:273)owem kluczowym pow(cid:273)oki do jest s(cid:273)owem kluczowym pow(cid:273)oki done jest s(cid:273)owem kluczowym pow(cid:273)oki Poleć książkęKup książkę Rozdzia(cid:228) 7. (cid:105) Silnia 107 -bash: type: ((: nie znaleziono -bash: type: )): nie znaleziono $ i++ oraz i--, czyli skrócony zapis inkrementacji/dekrementacji W Bashu, tak jak w innych popularnych j(cid:266)zykach programowania, dost(cid:266)pny jest skró- cony operator zwi(cid:266)kszenia warto(cid:286)ci zmiennej (inkrementacji; ang. incrementation) oraz zmniejszenia (dekrementacji; ang. decrementation). Ich zapis wygl(cid:261)da nast(cid:266)puj(cid:261)co: i++ to zwi(cid:266)kszenie warto(cid:286)ci zmiennej $i o 1, skrócony zapis dla i=$i+1 i-- to zmniejszenie warto(cid:286)ci zmiennej $i o 1, skrócony zapis dla i=$i-1 W odró(cid:298)nieniu od innych j(cid:266)zyków programowania, w Bashu nie mo(cid:298)na u(cid:298)ywa(cid:252) tych zapisów tak po prostu. Mo(cid:298)na je stosowa(cid:252) jedynie w notacji matematycznej, co za- prezentowa(cid:225)em w poni(cid:298)szym przyk(cid:225)adzie: $ a=4 $ a++ -bash: a++: nie znaleziono polecenia $ declare -i b=4 $ b++ # nie dzia(cid:225)a równie(cid:298) dla zmiennej typu integer -bash: b++: nie znaleziono polecenia $ Zapewne zastanawiasz si(cid:266), gdzie si(cid:266) podzia(cid:225) ulubiony znak dolara, który powinien poprzedza(cid:252) odwo(cid:225)anie do zmiennej. O tym, (cid:298)e jest on w tym wypadku zb(cid:266)dny, (cid:286)wiad- czy ten oto przyk(cid:225)ad: $ c=4 $ $c++ -bash: 4++: nie znaleziono polecenia $ Bash zg(cid:225)asza b(cid:225)(cid:261)d, (cid:298)e polecenie 4++ nie istnieje. Dzieje si(cid:266) tak dlatego, (cid:298)e Bash nie zna tego zapisu i wpierw próbuje rozwin(cid:261)(cid:252) zmienn(cid:261) jej warto(cid:286)ci(cid:261), a nast(cid:266)pnie wykona(cid:252) polecenie, które powsta(cid:225)o z warto(cid:286)ci zmiennej i doklejonego napisu ++. Spróbujmy udowodni(cid:252) t(cid:266) teori(cid:266): $ a= echo $ a++ -bash: a++: nie znaleziono polecenia $ $a++ # Bash wykona(cid:225) polecenie echo i wypisa(cid:225) dwa plusy na ekran ++ $ Poleć książkęKup książkę 108 Bash. Praktyczne skrypty Jak wida(cid:252) na powy(cid:298)szym przyk(cid:225)adzie, Bash rozwin(cid:261)(cid:225) zmienn(cid:261) i wykona(cid:225) polecenie, które powsta(cid:225)o z wyniku po(cid:225)(cid:261)czenia obu stringów. To w(cid:225)a(cid:286)nie dlatego na ekranie poja- wi(cid:225)y si(cid:266) dwa plusy. U(cid:298)ywanie skróconego zapisu w Bashu jest mo(cid:298)liwe jedynie w parze z wyra(cid:298)eniami matematycznymi: $ i=1 $ ((i++)) $ echo $i 2 $ Jednak równie(cid:298) w tym przypadku nie wstawia si(cid:266) dolara przed nazw(cid:261) zmiennej, gdy(cid:298) efekt b(cid:266)dzie taki sam jak w zapisie bez notacji arytmetycznej. Aby zrozumie(cid:252), dla- czego tak si(cid:266) dzieje, trzeba zrozumie(cid:252), jak dzia(cid:225)a interpreter. Najpierw podmieniane s(cid:261) warto(cid:286)ci zmiennych, a nast(cid:266)pnie Bash próbuje wykona(cid:252) polecenie. A oto inny dowód na t(cid:266) teori(cid:266): $ polecenie= echo Interpreter $ $polecenie Bash Interpreter Bash $ Innym wyt(cid:225)umaczeniem powodu, dla którego nie wstawiamy dolara, jest fakt, (cid:298)e zmie- niamy warto(cid:286)(cid:252) zmiennej numerycznej, zwi(cid:266)kszaj(cid:261)c lub zmniejszaj(cid:261)c j(cid:261) o 1. W pe(cid:225)nym zapisie warto(cid:286)(cid:252) do zmiennej przypisujemy równie(cid:298) bez znaku dolara, poniewa(cid:298) ten stosujemy jedynie w celu odwo(cid:225)ania do warto(cid:286)ci zmiennej, np. i=4 lub i=$i+2. (cid:231)wiczenie 7.1 Napisz rozwi(cid:261)zanie do listingu 6.1, u(cid:298)ywaj(cid:261)c p(cid:266)tli for zamiast while. Propozycje rozwi(cid:241)za(cid:254) znajduj(cid:241) si(cid:246) na ko(cid:254)cu ksi(cid:241)(cid:276)ki, w ostatnim rozdziale, zatytu- (cid:228)owanym „Rozwi(cid:241)zania (cid:232)wicze(cid:254)”. Poleć książkęKup książkę Skorowidz A adres IPv4, 201, 206 algorytm sortowania, 149 alternatywa, 75, 81 we wzorcach, 255 ampersand, 43 analiza dzia(cid:225)ania potoków, 235 parametrów wej(cid:286)ciowych, 69 porównawcza skryptu, 106 przekazywania tablic, 194 zbioru plików, 109, 110 arytmetyka zmiennoprzecinkowa, 229, 241 asercje o zerowej d(cid:225)ugo(cid:286)ci, 264, 265 atomy, 257 B backslash, 27, 32 Bash, 10 bezpiecze(cid:276)stwo, 119 biblioteka funkcji dla skryptu, 246 bit wykonywalno(cid:286)ci, 23 blok case, 166, 167 else – fi, 46 warunkowy, 130 b(cid:225)(cid:261)d, 80 sk(cid:225)adni, 53 b(cid:225)(cid:266)dna lista parametrów, 188 brak nawiasów, 51 C ci(cid:261)g Fibonacciego, 215 ci(cid:261)gi znakowe, 73 znaków w wyniku, 239 cyfra, 86 czas uniksowy, 123 czyszczenie pliku tekstowego, 127 czytanie HEREDOC, 142 D data modyfikacji pliku, 109 deklaracja funkcji, 173 dekrementacja, 107 detektor liczb, 85 parzysto(cid:286)ci, 86 dodawanie, 88 uprawnie(cid:276), 35 dokumenty HEREDOC, 142 inline, 140 domy(cid:286)lny prompt, 27 dopasowania, 256 opcjonalne, 260 wielokrotne, 260 dopasowanie w bloku case, 168, 169 dost(cid:266)p do odczytu, 34 uruchamiania, 34 zapisu, 34 dynamiczne typowanie, 50 dzia(cid:225)anie bloku case, 167 instrukcji break, 165 polecenia return, 186 potoków, 235 dzielenie, 89 ci(cid:261)gów znakowych, 73 Poleć książkęKup książkę 288 Bash. Praktyczne skrypty E edytor Notepad++, 22, 142 elementy schematów blokowych, 41 tablicy, 157 eskalacja wykonania, 169 F formatery liczbowe, 238 polecenia date, 125 polecenia stat, 123 tekstowe, 240 funkcje, 164, 170, 174 hermetyzacja, 187 nadpisywanie, 176 nadpisywanie zmiennych lokalnych, 182 parametry wej(cid:286)ciowe, 177, 188 pierwsze(cid:276)stwo, 175 pobieranie wyników, 185 priorytet, 174 przekazywanie tablic, 192, 194 rekurencyjne, 218 u(cid:298)ycie zmiennych, 189 widoczno(cid:286)(cid:252) zmiennych lokalnych, 181 wywo(cid:225)ywanie, 174, 183 zmienne globalne, 178 zwracanie warto(cid:286)ci, 185, 190 G gadatliwa wersja skryptu, 221 generowanie zbiorów liczb, 97 grawis, 117 grupy znakowe, 262, 263 H HEREDOC, 140 hermetyzacja funkcji, 187 I identyfikator procesu, 184 iloczyn bitowy, 212 logiczny, 77 ilo(cid:286)(cid:252) elementów dok(cid:225)adna, 261 elementów dowolna, 261 wywo(cid:225)anych funkcji rekurencyjnych, 219 implementacja ci(cid:261)gów Fibonacciego, 222 iteracyjna, 226 rekurencyjna, 226 indeks liczbowy, 155 inicjalizacja tablicy, 152 zmiennej, 20 inkrementacja, 100, 107 instalacja programu Cygwin, 15 (cid:286)rodowiska pracy OpenSUSE 13.2, 12 Windows 7, 14 instalator pakietów, 230 instrukcja break, 163, 164 case, 163 continue, 129, 131, 163 if, 39, 44, 51, 101, 113 instrukcje steruj(cid:261)ce, 39 interfejs graficzny KDE, 13 interpretacja, 10 interpreter, 10 J j(cid:266)zyki s(cid:225)abo typowane, 50 K kalkulator z menu, 229, 230 kierunek wykonywania skryptów, 23 klucze tekstowe, 155 kod wyj(cid:286)cia, 55 komentarz, 24 komunikacja, 185 konfiguracja sieci, 199 (cid:286)rodowiska pracy OpenSUSE 13.2, 12 Windows 7, 14 koniec pliku, 129 koniunkcja, 77 konkatenacja, 31, 72 konsola, 10 konwersja, 50 liczby dziesi(cid:266)tnej, 205 niejawna, 50 systemów liczbowych, 237, 242, 244 z czasu uniksowego, 124 z formatu czytelnego dla cz(cid:225)owieka, 123 znaku ko(cid:276)ca linii, 23 kryteria podzielno(cid:286)ci, 97 Poleć książkęKup książkę Skorowidz 289 L liczba dwójkowa, 204 nieparzysta, 85 parzysta, 85 liczby w wyniku, 237 logi, 252 lookingahead, 264 lookingbehind, 264 (cid:227) (cid:225)(cid:261)czenie stringów, 30, 31 maski sieci, 207 mno(cid:298)enie, 89 modulo, 90 modyfikatory, 239 M N klamrowe, 261 kwadratowe, 40, 51 podwójne, 58 pojedyncze, 78 okr(cid:261)g(cid:225)e, 88 pojedyncze, 56 negacja, 76 niesko(cid:276)czona p(cid:266)tla, 163 notacja nadpisywanie zmiennych lokalnych, 182 nawiasy $(), 116 ${}, 202 klamrowa, 71–74, 213 liczbowa, 35 literowa, 35 z grawisami, 117 z okr(cid:261)g(cid:225)ymi nawiasami, 88 z podwójnymi nawiasami, 58, 59 z pojedynczymi nawiasami kwadratowymi, 78 notacje instrukcji warunkowych, 52 Notepad++, 142 O obliczanie elementów ci(cid:261)gu, 216 pot(cid:266)gi, 171 obs(cid:225)uga menu, 245 odejmowanie, 88 okno terminala, 10 opcje polecenia chmod, 36 opcjonalne wyst(cid:261)pienie elementu, 262 operacje operator koniunkcji, 77 matematyczne, 86 na stringach, 71, 73 na tablicach, 158 ||, 66, 75 -ge, 146 -le, 99 koniunkcji, 77, 79 mniejszo(cid:286)ci, 146 mniejszy-równy, 99 modulo, 86 negacji, 76 porównania, 49 przypisania, 21 operatory bitowe, 208 do przetwarzania tekstu, 74 jednoargumentowe, 130 leniwe, 114 logiczne, 66, 75, 80, 113 oznaczenie typu, 93 P pakiety (cid:286)rodowiska Cygwin, 230 parametry polecenia bc, 241 cat, 134 date, 124 echo, 30 grep, 254 read, 38, 140 stat, 122 type, 60 wej(cid:286)ciowe, 68, 177 funkcji, 188 programu, 151 p(cid:266)tla, 232 for, 104, 112 for operuj(cid:261)ca na zbiorach, 113 niesko(cid:276)czona, 106, 163 select, 28, 248 until, 233 w p(cid:266)tli, 149 while, 99, 101, 233 Poleć książkęKup książkę 290 Bash. Praktyczne skrypty pobieranie parametrów wej(cid:286)ciowych, 151 warto(cid:286)ci z tablic, 146, 154 podmiana zawarto(cid:286)ci ci(cid:261)gu znakowego, 213 podpow(cid:225)oki, 184 podwójne rozwini(cid:266)cie zmiennej, 74 polecenia w HEREDOC, 141 polecenie cat, 128, 133 cd, 22, 24, 33 chmod, 24, 33, 35 date, 111, 122 declare, 93, 208 echo, 20, 24, 30, 129 eval, 118 exit, 55 expr, 92 grep, 254 let, 91 local, 180 printf, 236, 238, 240 read, 24, 37, 38, 140 readonly, 208 return, 186 source, 163, 196 stat, 111, 121 test, 53, 78, 129 time, 224 type, 60 typeset, 94 porównanie operatorów logicznych, 80 wywo(cid:225)ania funkcji, 183 pot(cid:266)gowanie, 90 potoki, 234 precyzja alternatywy, 258 liczb zmiennoprzecinkowych, 242 priorytety w zmiennych specjalnych, 72 program CMD, 14 Cygwin, 14 PowerShell, 14 prompt, 20, 27 przekazywanie tablic przez nazw(cid:266), 194 przez warto(cid:286)ci, 192 przekierowanie na strumie(cid:276) wej(cid:286)ciowy, 139 obu strumieni wyj(cid:286)ciowych, 138 strumienia, 135, 232 b(cid:225)(cid:266)dów, 137, 139 do pliku, 136–138 prze(cid:225)(cid:261)czanie interpretacji wyra(cid:298)e(cid:276) regularnych, wyj(cid:286)cia, 136–139 przeliczanie liczb binarnych, 204 dziesi(cid:266)tnych, 205 254 przesuni(cid:266)cia bitowe w lewo, 209 w prawo, 210 przetwarzanie równoleg(cid:225)e, 43 sekwencyjne, 42 przypisanie do zmiennej, 86 puste wiersze, 127 R rekurencyjne wyszukiwanie dat, 251 reszta z dzielenia, 90 rozdzielenie instrukcji i polece(cid:276), 42 rozpoznawanie typu, 60 rozszerzenia perlowe, 263 rozwi(cid:261)zania (cid:252)wicze(cid:276), 271 rzutowanie, 50 S schemat blokowy, 41, 42, 45, 47, 68, 98, 105, 112, 133, 165, 217, 253 serwer DHCP, 199 sie(cid:252) komputerowa, 206 silnia, 103 sk(cid:225)adnia $(), 111 HEREDOC, 141 skrócona forma instrukcji warunkowej, 111 skrypt rozpoznaj(cid:261)cy p(cid:225)e(cid:252), 63, 66 s(cid:225)owo kluczowe do, 99 done, 99 else, 40 fi, 40 if, 40 then, 40 while, 99 sortowanie liczb, 145 sprawdzanie poprawno(cid:286)ci konfiguracji sieci, 199 zgodno(cid:286)ci adresów, 201 sta(cid:225)e, 207 standardowe wyj(cid:286)cie, 20 stringi, 30 w instrukcjach warunkowych, 56 Poleć książkęKup książkę Skorowidz 291 strumie(cid:276), 135 b(cid:225)(cid:266)dów, stderr, 136 wej(cid:286)cia, stdin, 135 wyj(cid:286)cia, stdout, 20, 135 wyj(cid:286)cia podpow(cid:225)oki, 186 suma bitowa, 202, 211 system liczbowy, 202 binarny, 204 dziesi(cid:266)tny, 203, 237 ósemkowy, 237 szesnastkowy, 237 operacyjny OpenSUSE, 12 Windows 7, 14 rezerwacji miejsc, 161, 245 (cid:286)cie(cid:298)ka, 22, 24, 33 (cid:286)rednik, 40, 42 (cid:263) T tablice, 152 asocjacyjne, 155 ilo(cid:286)(cid:252) elementów, 157 indeks, 155 inicjalizacja, 152 pobieranie warto(cid:286)ci, 154 przetworzenie ka(cid:298)dego elementu, 157 wielowymiarowe, 248 wypisanie wszystkich warto(cid:286)ci, 156 zapisywanie warto(cid:286)ci, 153 termin $, 20 read, 24 terminal, 10 tryb gadatliwy, 220 interaktywny, 10, 36, 196 odpluskwiania kodu, 28 tylko do odczytu, 202 wsadowy, 10, 36, 196 tylda, 22 U uprawnienia, 33–35 nieefektywne, 34 uruchamianie skryptu, 21 usuwanie pustych wierszy, 127 u(cid:298)ycie potoków, 244 W walidacja, 120 warto(cid:286)ci logiczne, 50 warto(cid:286)(cid:252) zmiennej, 25, 37 wczytywanie dokumentów HEREDOC, 141 wersja gadatliwa, 220 weryfikacja zawarto(cid:286)ci pliku tekstowego, 128 widoczno(cid:286)(cid:252) zmiennych lokalnych, 181 w(cid:225)a(cid:286)ciciel pliku, 33 wrapper, 56 wstrzykni(cid:266)cie kodu, 120 wydajno(cid:286)(cid:252) funkcji rekurencyjnych, 218 wykonanie podpow(cid:225)oki, 185 wykrycie trybu pracy, 36 wypisywanie ci(cid:261)gu znaków, 225 warto(cid:286)ci tablicy, 156 wyra(cid:298)enia Basha, 116 matematyczne, 88 w instrukcjach steruj(cid:261)cych, 101 w p(cid:266)tli while, 101 z poleceniem expr, 92 z poleceniem let, 91 regularne, 253, 255 alternatywa, 255 atomy, 257 grupy znakowe, 262 rozszerzenia perlowe, 263 zakresy znaków, 258 znaki specjalne, 255 wyra(cid:298)enie $(), 183 , 140 wyszukiwanie dat w plikach, 251 wy(cid:286)wietlanie napisu, 19, 30 wywo(cid:225)ywanie funkcji, 174 wzorce, 255 Z zagnie(cid:298)d(cid:298)one instrukcje warunkowe, 44, 46, 48 zako(cid:276)czenie skryptu, 55 zakresy liczbowe, 258 literowe/znakowe, 258, 260 zapisywanie warto(cid:286)ci w tablicach, 153 zastosowanie zmiennych lokalnych, 180 zbiór liczb, 97 zgodno(cid:286)(cid:252) adresów IPv4, 201 z(cid:225)o(cid:298)ono(cid:286)(cid:252) obliczeniowa liniowa, 222 wyk(cid:225)adnicza, 220 Poleć książkęKup książkę 292 Bash. Praktyczne skrypty zmiana bie(cid:298)(cid:261)cej (cid:286)cie(cid:298)ki, 33 uprawnie(cid:276) plików i katalogów, 33 warto(cid:286)ci zmiennej, 26 zmienna, variable, 21, 25 $?, 53 $@, 146 $PWD, 33 zmienne globalne, 178, 185 liczbowe, 87 lokalne, 180 specjalne, 72, 184 tablicowe, 146, 151 tylko do odczytu, 207 w funkcjach, 178 w HEREDOC, 141 znak #, 24 , ampersand, 43 @, 27, 124 =, 21 gwiazdki, 261 kontynuacji wiersza, 27 ko(cid:276)ca linii, 22 równo(cid:286)ci, 40 (cid:286)rednika, 40 tyldy, 22, 33 ucieczki, escape character, 28, 32 zach(cid:266)ty, prompt, 20, 24, 27 zapytania, 262 znaki dopasowuj(cid:261)ce, 263 specjalne, 28–31, 255 specjalne Perla, 263 zwracanie warto(cid:286)ci, 185 (cid:273) (cid:296)le zaprojektowane parametry wej(cid:286)ciowe, 188 u(cid:298)ycie zmiennych, 189 zwracanie warto(cid:286)ci, 190 Poleć książkęKup książkę
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Bash. Praktyczne skrypty
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: