abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 05:44 | Bezpečnostní upozornění

    Balíček s příkazem sudo byl vydán ve verzi 1.9.17p1. Řešeny jsou zranitelnosti CVE-2025-32462 (lokální eskalace práv prostřednictvím volby host) a CVE-2025-32463 (lokální eskalace práv prostřednictvím volby chroot).

    Ladislav Hagara | Komentářů: 0
    dnes 05:22 | IT novinky

    Do služeb Seznam.cz se lze nově přihlásit pomocí služby MojeID [𝕏].

    Ladislav Hagara | Komentářů: 0
    dnes 03:33 | Bezpečnostní upozornění

    Bezpečnostní výzkumníci zveřejnili informace o osmi zranitelnostech, které postihují více než 700 modelů tiskáren, skenerů a štítkovačů značky Brother. Bezpečnostní upozornění vydali také další výrobci jako Fujifilm, Ricoh, Konica Minolta a Toshiba. Nejzávažnější zranitelnost CVE-2024-51978 umožňuje útočníkovi vzdáleně a bez přihlášení získat administrátorská oprávnění prostřednictvím výchozího hesla, které lze odvodit ze

    … více »
    Ladislav Hagara | Komentářů: 0
    včera 16:00 | Komunita

    Společnost Oracle vlastní ochrannou známku JAVASCRIPT. Komunita kolem programovacího jazyka JavaScript zastoupena společností Deno Land vede právní bitvu za její osvobození, viz petice a otevřený dopis na javascript.tm. Do 7. srpna se k nim má vyjádřit Oracle (USPTO TTAB).

    Ladislav Hagara | Komentářů: 3
    včera 13:11 | IT novinky

    Byl představen samostatný rádiový modul Raspberry Pi Radio Module 2 s Wi-Fi a Bluetooth.

    Ladislav Hagara | Komentářů: 6
    včera 12:44 | Upozornění

    Certifikační autorita Let’s Encrypt ukončila k 4. červnu zasílání e-mailových oznámení o vypršení platnosti certifikátů. Pokud e-maily potřebujete, Let’s Encrypt doporučuje některou z monitorovacích služeb.

    Ladislav Hagara | Komentářů: 0
    včera 01:44 | Pozvánky

    Přemýšlíte, jak začít prázdniny? Už v úterý 1. července se bude konat Virtuální Bastlírna, tedy online setkání bastlířů, techniků, vědců i akademiků, kde se ve volné diskuzi probírají novinky ze světa techniky, ale i jiných zajímavých témat.

    Za poslední měsíc jsme byli svědky plamenů několika raket. Zatímco malá raketa od Hondy se úspěšně vznesla a opět přistála, raketa od SpaceX se rozhodla letět všemi směry najednou. Díkybohu méně … více »
    Uprdkávač | Komentářů: 0
    29.6. 23:44 | Komunita

    Linus Torvalds zmínil, že souborový systém Bcachefs zřejmě odstraní z mainline Linuxu v začleňovacím okně pro vydání 6.17. Kent Overstreet mu totiž posílá kód s novou funkcionalitou i pro začlenění do kandidátů na vydání, kdy očekává pouze opravy chyb. Kent Overstreet byl již dříve z vývoje vyloučen kvůli konfliktní komunikaci.

    Fluttershy, yay! | Komentářů: 11
    27.6. 11:55 | IT novinky

    Ministerstvo průmyslu a obchodu propaguje Microsoft. Ten ve spolupráci s Ministerstvem průmyslu a obchodu spouští AI National Skilling Plan v ČR. "Iniciativa Microsoftu přináší konkrétní a praktickou podporu právě tam, kde ji nejvíc potřebujeme – do škol, firem i veřejné správy.", říká ministr průmyslu a obchodu Lukáš Vlček.

    Ladislav Hagara | Komentářů: 33
    27.6. 10:55 | Zajímavý projekt

    Jste český ISP? Vyplněním krátkého dotazníku můžete pomoci nasměrovat vývoj nové generace routerů Turris Omnia [𝕏].

    Ladislav Hagara | Komentářů: 4
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (28%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 335 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Bash, moje knihovnička funkcí pro práci s čísly

    7.1.2009 03:34 | Přečteno: 1596× | Bash | Výběrový blog

    Učím se psát jednodušší skriptíky v Bashi. Chystám se napsat v Bashi "prográmek". Tak jsem vytvořil takovou knihovničku funkcí pro práci s čísly. A rád bych se s vámi o ni podělil. Doufám, že vám k něčemu bude, i když třeba jenom pro pobavení. :-)

    #!/bin/bash
    #********************************************************************************************
    ## numbers.sh
    ## autor: Václav Radoměřský
    ## leden 2009
    ## licence: GNU GPL verze 2 nebo 3 nebo novější, nebo modifikovaná ("trojbodová") BSD licence
    #********************************************************************************************
    # Je to vlastně jakási "knihovna" funkcí, kterou můžete do svého shellového skriptu
    # vložit příkazem source (.), příklad:
    # source /cesta/numbers.sh
    # nebo: . /cesta/numbers.sh
    # Otestováno (je funkční) v Bash verze 3.2.39(1). Pokud nemáte extrémně starou verzi Bashe,
    # tak by to mělo jet.
    success=0
    # hodnota, kterou budou funkce vracet v případě "úspěchu" (pravdy)
    error=-1
    # To je hodnota, kterou navrátí vybrané funkce v případě chyby
    rrandom_number=-1
    # rrandom_number je proměnná, ve které bude návratová hodnota funkce random_number
    max_random=32767
    # max_random udává největší pseudonáhodné číslo vrácené Bashem
    min_random=0
    # nejmenší pseudonáhodné číslo vracené Bashem
    is_zero()
    {
    # Vrátí $succes, jestliže parametr číslo jedna je nula, jinak vrátí $error.
    # Testujeme, zda byl funkci předán aspoň jeden argument
    if [ $# -lt 1 ]
    then
     return $error
    fi
    # Testuje, zda dané číslo je rovno 0.
    # napravo od =~ je regulární výraz
    if [[ "${1}" =~ 0 ]]
    then
     return $success
    else
     return $error
    fi
    }
    is_positive_number()
    {
    # Otestuje, zda $1 je kladné číslo. Vrátí hodnotu proměnné success, pokud argument je kladné číslo,
    # jinak vrátí hodntou proměnné "error" (tedy ${error}).
    # Testujeme, zda funkci byl předán aspoň jeden parametr ("argument")
    if [ $# -lt 1 ]
    then
     return $error
    fi
    #
    # Testujeme, zda první parametr je kladné číslo
    # napravo od =~ je regulární výraz
    if [[ "${1}" =~ ^[+]?[1-9]+[0-9]*$ ]]
    then
     return $success
    else
     return $error
    fi
    }
    is_negative_number()
    {
    # Vrátí $succes, jestliže parametr číslo jedna je záporné číslo, jinak vrátí $error.
    if [ $# -lt 1 ]
    then
     return $error
    fi
    # Napravo od =~ je regulární výraz.
    if [[ "${1}" =~ ^-[1-9]+[0-9]*$ ]]
    then
     return $success
    else
     return $error
    fi
    }
    is_nonnegative_number()
    {
    # Vrátí $success, pokud argument je nezáporné číslo, jinak vrátí $error.
    if is_zero $1 || is_positive_number $1
    then
     return $success
    else
     return $error
    fi
    }
    is_nonpositive_number()
    {
    # Vrátí $success v případě nekladného arguemntu (parametru), jinak vrátí $error.
    if [ $# -lt 1 ]
    then
     return $error
    fi
    if is_zero $1 || is_negative_number $1
    then
     return $success
    else
     return $error
    fi
    }
    is_number()
    {
    # Vrátí $succes, jestliže první parametr je číslo, jinak vrátí $error.
    if [ $# -lt 1 ]
    then
     return $error
    fi
    if is_nonnegative_number $1 || is_nonpositive_number $1
    then
     return $success
    else
     return $error
    fi
    }
    compare_numbers()
    {
    # Funkce porovná dvě čísla -- $1 a $2.
    # Vrátí $success, pokud je druhý parametr funkce větší než první.
    # Jinak vrátí hodnotu $error.
    #
    # Otestujeme, zda jsme dostali aspoň dva parametry (argumenty) a zda to jsou čísla.
    if [ $# -ge 2 ] && is_number $1 && is_number $2
    then
     if [ $2 -gt $1 ]
     then
      return $success
     else
      return $error
     fi
    else
     return $error
    fi
    }
    
    random_number()
    {
    # Vrátí pseudonáhodné číslo z intervalu <$1;$2>.
    # $1 musí být menší než $2.
    # Tato funkce využívá "proměnné" RANDOM.
    # Otestujeme, zda jsme dostali aspoň dva parametry ("argumenty"). V případě že ne, skončím s chybou.
    if [ $# -lt 2 ]
    then
     return $error
    fi
    # Funkce compare_numbers nám zkontroluje, zda se jedná o čísla a zda je $2 > $1.
    if compare_numbers $1 $2
    then
     rrandom_number=$RANDOM
    # "Proměnná" RANDOM generuje pseudonáhodá čísla, viz man bash.
     delka_intervalu=$(($2-$1))
     max_delka_intervalu=$(($max_random-$min_random))
     procentni_podil=$((( $rrandom_number-$min_random )*100/$max_delka_intervalu))
     rrandom_number=$(($1+$procentni_podil*$delka_intervalu/100))
    else
     return $error
    fi
    }
    
    
           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    7.1.2009 08:07 Jan Kurik | blog: Hemis
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly

    Není to zbytečně komplikované ? Jakou výhodu má třeba použití funkce is_nonnegative_number() místo klasického [[ $X -ge 0 ]] ? Taky mi příjde trošku těžkopádné používat regulární výrazy na to abych zjistil, zda je proměnná rovna nule.

    Ale jako tréningový script to není špatné.

    7.1.2009 08:57 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly
    imho proto, ze jde o to aby to bylo cislo a ne "blerf"
    In Ada the typical infinite loop would normally be terminated by detonation.
    7.1.2009 20:56 Jirka P
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly
    Na já nevim...

    \u@\h:\w$ a=blarf
    \u@\h:\w$ [ $a -eq 0 ] && echo 1;
    [: 2: Illegal number: blarf
    \u@\h:\w$ [ $a -eq 0 ] || echo 0;
    [: 3: Illegal number: blarf
    0
    
    7.1.2009 21:06 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly
    Zkuste to s těmi doporučovanými dvojitými.
    7.1.2009 23:21 Jirka P
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly
    A proč bych měl? Je nějaký jiný důvod, než abych zjistil, že v tomto konkrétním případě se od jednoduchých liší?
    8.1.2009 06:40 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly
    Protože Jan Kurik, který tuto větev začal, tam měl dvojité, takže vaše odpověď pht je o něčem jiném, než o čem on psal.
    7.1.2009 09:29 Begleiter | skóre: 47 | blog: muj_blog | Doma
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly

    Ale jako tréningový script to není špatné.

    Díky. :-)

    Salutis avatar 7.1.2009 10:23 Salutis | skóre: 7 | blog: Salutis
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly

    Načo je dobré používať blok na jeden príkaz?

    if [ $# -lt 1 ]
    then
    return $error
    fi

    .. namiesto ..

    [ $# -lt 1 ] && return $error

    Vidieť to v skriptoch dosť často, tak neviem, asi to príde niekomu prehľadnejšie.

    Najväčší dar je vedieť posúdiť hodnotu vecí.
    Salutis avatar 7.1.2009 10:33 Salutis | skóre: 7 | blog: Salutis
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly
    Funkcia is_zero je extrémny úlet. Ináč celkom fajn!
    Najväčší dar je vedieť posúdiť hodnotu vecí.
    7.1.2009 12:29 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly
    Kdyby u toho prvního bylo then na stejném řádku s if a tělo bylo odsazené, považoval bych to za přehlednější.
    7.1.2009 10:27 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly

    Zdravim.

    Dobry napad :-) ale trochu se mi nelibi ta kontrola poctu argumentu. Teda ona ta kontrola samotna je v poradku, ale i kdyz funkci nepredate pozadovany pocet argumentu, tak pokracujete v behu funkce. Pouze funkce compare_numbers se takto nechova, ale ja bych i tam tu kontrolu rozdelil na dva ify - v prvnim pocet argumentu a az v pripade spravneho poctu kontrola, zda to jsou cisla.

    No a pokracovat muzete rozsirenim na desetinna cisla a na osmickova a hexa-cisla :-).

    Dejv
    Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
    7.1.2009 11:00 YYY | skóre: 29 | blog: martinek
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly
    Ja si vystavim s awk a brainfuckem. Ale jinak celkem pekne(ale co to is_zero?).
    Václav 7.1.2009 11:45 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
    Rozbalit Rozbalit vše Re: Bash, moje knihovnička funkcí pro práci s čísly
    No počkej, přesně tahle funkce mi v bashi chyběla :D Ne, jinak je to opravdu pěkné.
    Cross my heart and hope to fly, stick a cupcake in my eye!

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.