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:
Použite paste -s a bc s patričnými prepínačmi, prepojené rúrou.
- 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:
Doplniť do rúrovej sekvencie na začiatok grep.
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:
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.
- 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
1 class MojaTrieda:
alebo takto
1 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
Sekvencia sedov prepojených v rúre
sedovský skript
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