5. cvičení


Programování v shellu

Základní konstrukce bash lze nalézt v souboru bash_basics.sh.


Úkoly

  1. Napište funkce convert_to_decimal a convert_from_decimal. Funkce convert_to_decimal bere dva argumenty první je číslo a druhy je poziční soustava (2 až 64). Funkce převede číslo do desítkové soustavy. Funkce convert_from_decimal bere také dva argumenty, kde první je číslo v desítkové soustavě a druhý argument je soustava do které mame číslo převést. Čísla větší než 9 jsou malá a velká písmena anglické abecedy a znaky @ a _. Nepoužívejte žádné externí programy pro převod soustav.

        parallels@ubuntu:/media/psf/PhD/UNIX/Lectures$ ./homework_8.sh
        convert_from_decimal 222 3 -> 22020
        convert_from_decimal 222 16 -> de
        convert_from_decimal 222 32 -> 6u
    
        convert_to_decimal 22020 3 -> 222
        convert_to_decimal de 16 -> 222
        convert_to_decimal 6u 32 -> 222
    

    4 body

  2. Implementujte jako funkce (zjednodušené) programy dirname a basename: z cesty zadané jako parametr, po odebrání případného / na konci, vrátí (vypíše) část do a od poslední / (bez něj, pokud to není jediný znak). Pokud již cesta / neobsahuje, dirname vrátí '.' a basename celé jméno.

        parallels@ubuntu:/media/psf/PhD/UNIX/Lectures$ ./homework_9.sh /media/psf/PhD/UNIX/
        basename
        UNIX
        dirname
        /media/psf/PhD
    
        parallels@ubuntu:/media/psf/PhD/UNIX/Lectures$ ./homework_9.sh /media/psf/PhD/UNIX/Lectures/homework_9.sh
        basename
        homework_9.sh
        dirname
        /media/psf/PhD/UNIX/Lectures
    

    basename 2 body, dirname 2 body

  3. V systému bývá zvykem, že se u logů provadí tzv. rotace. Soubor xy se přejmenuje na xy.0, xy.0 na xy.1 atd. až do nějaké horní hranice, soubory s číslem nad touto hranicí se vymažou. Napište program, který dostává dva parametry - jméno souboru a maximální počet uložených kopií (lze vynechat, implicitní hodnota je 30) - a proveďte rotaci.

    4 body