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 13:33 | Komunita

    Dle analytics.usa.gov je za posledních 90 dnů 6,2 % přístupů k webových stránkám a aplikacím federální vlády Spojených států z Linuxu.

    Ladislav Hagara | Komentářů: 0
    včera 17:44 | Zajímavý článek

    Jak si zobrazit pomocí Chrome a na Chromiu založených webových prohlížečích stránky s neplatným certifikátem? Stačí napsat thisisunsafe.

    Ladislav Hagara | Komentářů: 3
    včera 00:33 | Bezpečnostní upozornění

    V repozitáři AUR (Arch User Repository) linuxové distribuce Arch Linux byly nalezeny a odstraněny tři balíčky s malwarem. Jedná se o librewolf-fix-bin, firefox-patch-bin a zen-browser-patched-bin.

    Ladislav Hagara | Komentářů: 13
    včera 00:22 | Komunita

    Dle plánu by Debian 13 s kódovým názvem Trixie měl vyjít v sobotu 9. srpna.

    Ladislav Hagara | Komentářů: 0
    19.7. 13:22 | Komunita

    Vývoj linuxové distribuce Clear Linux (Wikipedie) vyvíjené společností Intel a optimalizováné pro jejich procesory byl oficiálně ukončen.

    Ladislav Hagara | Komentářů: 1
    18.7. 14:00 | Zajímavý článek

    Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    18.7. 12:00 | Nová verze

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 12.0 (Mastodon). Forgejo je fork Gitei.

    Ladislav Hagara | Komentářů: 1
    17.7. 18:44 | Zajímavý článek

    Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 155 (pdf) a Hello World 27 (pdf).

    Ladislav Hagara | Komentářů: 1
    17.7. 16:11 | Nová verze

    Hyprland, tj. kompozitor pro Wayland zaměřený na dláždění okny a zároveň grafické efekty, byl vydán ve verzi 0.50.0. Podrobný přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 4
    17.7. 15:55 | Komunita

    Patrick Volkerding oznámil před dvaatřiceti lety vydání Slackware Linuxu 1.00. Slackware Linux byl tenkrát k dispozici na 3,5 palcových disketách. Základní systém byl na 13 disketách. Kdo chtěl grafiku, potřeboval dalších 11 disket. Slackware Linux 1.00 byl postaven na Linuxu .99pl11 Alpha, libc 4.4.1, g++ 2.4.5 a XFree86 1.3.

    Ladislav Hagara | Komentářů: 6
    Kolik tabů máte standardně otevřeno ve web prohlížeči?
     (24%)
     (22%)
     (4%)
     (6%)
     (2%)
     (4%)
     (4%)
     (33%)
    Celkem 49 hlasů
     Komentářů: 9, poslední dnes 15:56
    Rozcestník

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

    7.1.2009 03:34 | Přečteno: 1597× | 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.