= Cvičenia zo shellu = Je vhodné a žiadúce riešiť cvičenia viacerými (naznačenými) cestami. == Sumátor == Napíšte skript, ktorý sčíta čísla, ktoré sú na štandartnom vstupe. Každé číslo je v jednom riadku. === Možné prístupy: === 1. Použite `paste -s` a `bc` s patričnými prepínačmi, prepojené rúrou. 2. Použite cyklus typu: {{{ while read NUM do ... done }}} == Sumátor v2 == To isté ako sumátor, ale sú povolené aj prázdne riadky na vstupe, ktoré treba ignorovať. === Možné prístupy: === 1. Doplniť do rúrovej sekvencie na začiatok `grep`. 2. Doplniť do cyklu nejaký ten `test`. V cykle sa pokračuje príkazom `continue`. == Sumátor v3 == To isté ako sumátor, ale sumu treba vypísať a vynulovať vždy, keď sa na vstupe ocitne špeciálne slovo `SUM` na osobitnom riadku. Vstup: {{{ 1 2 3 SUM 3 4 5 SUM 6 7 }}} Výstup: {{{ 6 12 13 }}} === Možné prístupy: === 1. Prístup s rúrovou postupnosťou je možný aj tu. Začína to však byť neprirodzené. Moje riešenie obsahuje jediný pridaný sed medzi `paste` a `bc`. 2. Druhý typ riešenia sa upraví ľahko. == Mailovač == Máme súbor, ktorý obsahuje riadky reprezentujúce účastníkov konferencie typu {{{ MENO="Alica Komunikatívna" EMAIL="a.kom@somewhere.com" }}} Načrtnite shellovský skript `mailovac`, ktorý pre štandartný vstup obsahujúci riadky horeuvedeného typu pošle súbor, ktorého meno dostane ako svoj prvý parameter `$1` na jednotlivé emailové adresy. Príkaz na posielanie pošty v UNIXe je `mail` ''adresa'', zasielanú správu príkaz `mail` očakáva na svojom štandartnom vstupe. === Možné prístupy: === Najpv treba vyriešiť podúlohu: ako vyfiltrovať zo štandartného vstupu v uvedenom tvare e-mailové adresy. Použije sa, samozrejme, `sed`. == Vyhľadávanie v zdrojákoch == Definícia triedy v jazyku Python začína buď takto {{{#!python class MojaTrieda: }}} alebo takto {{{#!python class MojaTrieda(Nadtrieda): }}} Napíšte skript `triedy`, ktorý ako parameter dostane mená súborov, ktoré sú pythonovské zdrojové kódy. Výstup určuje, v ktorých súboroch je ktorá trieda definovaná, je v tvare {{{ MojaTrieda:zdrojak1.py TvojaTrieda:zdrojak2.py }}} == HTML escaping == Napíšte skript, ktorý očakáva nejaký text na štandartnom vstupe. Na výstupe nahradí znaky reťazcami (HTML entitami) takto: || '''Znak''' || '''HTML entita''' || || " || {{{"}}} || || < || {{{<}}} || || > || {{{>}}} || || & || {{{&}}} || === Možné prístupy === 1. Sekvencia `sed`ov prepojených v rúre 1. `sed`ovský skript 1. `sed` s viacerými `-e` prepínačmi. == Násobilková tabuľka == Napíšte skript, ktorý vypíše takúto tabuľku. Urobte to tak, aby bola pekne zarovnaná; `man printf`. {{{ 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 }}}