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

   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

"

"

<

&lt;

>

&gt;

&

&amp;

Možné prístupy

  1. Sekvencia sedov prepojených v rúre

  2. sedovský skript

  3. 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

KMaDGWiki: OperacneSystemy/CviceniaZoShellu (last edited 2011-03-03 16:49:23 by jenca)