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í
×
    včera 23:22 | Nová verze

    Byla vydána nová verze 10.4 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu důležitých bezpečnostních oprav, vylepšení funkcí a oprav chyb. Vyzkoušet lze experimentální podporu postkvantového algoritmu mldsa44-ed25519.

    Ladislav Hagara | Komentářů: 0
    včera 16:33 | Zajímavý projekt

    Open Printer je otevřená kompaktní tiskárna od Open Tools. Brzy by měla být spuštěna kampaň na její podporu na Crowd Supply. Současně by měly být uvolněny zdrojové kódy. Postavena je na Raspberry Pi Zero W a STM32. Používá inkoustové kazety HP 302.

    Ladislav Hagara | Komentářů: 0
    včera 15:11 | Nová verze

    Byla vydána nová verze 3.28.0 FreeRDP, tj. svobodné implementace protokolu RDP (Remote Desktop Protocol). Opraveno bylo 8 zranitelností.

    Ladislav Hagara | Komentářů: 0
    4.7. 23:33 | IT novinky

    Čeští policisté společně se svými tureckými kolegy zadrželi 51 lidí, kteří se podle kriminalistů podíleli na provozu podvodného call centra v Istanbulu. Skupina je spojena s 1173 případy podvodů na českých občanech, při kterých vznikla škoda přes 553 milionů korun.

    Ladislav Hagara | Komentářů: 7
    3.7. 03:55 | Nová verze

    Immich byl vydán v nové verzi 3.0.0. Jedná se o alternativu k výchozím aplikacím od Googlu a Applu pro správu fotografií a videí umožňující vlastní hosting serveru Immich. K vyzkoušení je demo. Immich je součástí balíčků open source aplikací FUTO. Zdrojové kódy jsou k dispozici na GitHubu pod licencí AGPL-3.0.

    Ladislav Hagara | Komentářů: 5
    3.7. 02:55 | IT novinky

    Společnost Juno Computers prodávající počítače s předinstalovaným Linuxem má nově v nabídce linuxový tablet Juno Tab 4 - WiFi. Na výběr je Debian, Ubuntu a Kubuntu. Předobjednat jej lze za 949 liber (26 500 korun).

    Ladislav Hagara | Komentářů: 0
    3.7. 01:22 | Nová verze

    Podman (Pod Manager), nástroj umožňující vytvářet a provozovat kontejnery, aniž by uživatel potřeboval práva roota, byl vydán v nové major verzi 6.0.0. Přehled novinek v poznámkách k vydání. Řešena je i vážná bezpečnostní chyba CVE-2026-57231.

    Ladislav Hagara | Komentářů: 0
    3.7. 00:11 | IT novinky

    Společnost Sony oznámila, že od ledna 2028 přestane vydávat nové hry pro PlayStation na fyzických discích. Všechny budoucí tituly budou dostupné výhradně v digitální podobě na PlayStation Store.

    Ladislav Hagara | Komentářů: 8
    2.7. 16:55 | Nová verze

    Google Chrome 150 byl prohlášen za stabilní. Nejnovější stabilní verze 150.0.7871.46 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Opraveno bylo 433 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    2.7. 13:00 | Nová verze

    Soudní dvůr Evropské unie potvrdil rekordní pokutu 4,125 miliardy eur (100 miliard Kč) americké technologické firmě Google ze skupiny Alphabet. Pokutu firmě v roce 2018 vyměřila Evropská komise (EK) za to, že Google podle ní zneužívá operačního systému Android k potlačení konkurence na trhu vyhledávacích služeb.

    Ladislav Hagara | Komentářů: 17
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (16%)
     (25%)
    Celkem 2065 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: Parametry

    21.3.2010 15:11 Rogue | skóre: 4
    Parametry
    Přečteno: 450×

    Dobrý den, jelikož Bash není moje silná stránka obracím se na Vás o pomoc. Mám script, ze kterého získávám parametry pomocí getopts(). A vůbec si nevím rady jak oštřit to, že když uživatel zadná špatný parametr či jakýkoli nesmysl, aby mu script vrátil chybové hlášeí. Prosím o pomoc, přikádám můj "scriptík".

    while getopts "a:b:c:d:e:" PARAMETR;

    do

    case $PARAMETR in

    e) echo "ahoj" ;;

    w) echo "cau" ;;

    \?) echo "hlaseni"; exit 1 ;;

    *) echo "hlaseni"; exit 1 ;;

    esac

    done


    Řešení dotazu:


    Odpovědi

    21.3.2010 17:32 zulu
    Rozbalit Rozbalit vše Re: Parametry
    Jestli myslíš parametry jednotlivých voleb, tak ty se ukládají do $OPTARG a můžeš si je testovat, jak potřebuješ.

    Jestli myslíš parametry, které getopts vůbec nezpracuje, tak v $OPTIND je index dalšího parametru ke zpracování (resp. posledního nezpracovaného) a můžeš ho (za tím while) porovnat s celkovým počtem parametrů.
    [ $OPTIND -le $# ] && echo "zasek na parametru $OPTIND - ${!OPTIND}"
    22.3.2010 19:47 Rogue | skóre: 4
    Rozbalit Rozbalit vše Re: Parametry
    Pořeboval bych ukázat jak ošetřit dva parametry ze scriptu uvedeného výše takovým způsobem, aby nemohli být zadány současně například parametry -a -b, v případě že by je uživatel zadal obdržel by chybové hlášení. Prostě a stručně nemůže být zadáno -a i -b současně, ale která koliv kombinace jiných parametrů být zadána může. Moc díky za vaši odpověď.
    22.3.2010 20:03 l4m4
    Rozbalit Rozbalit vše Re: Parametry
    Aplikační logika se holt musí napsat, to getopt sám neudělá.
    seen_a=
    seen_b=
    
    ...
    while getopts...
    ...
    a) seen_a=yes; ...;;
    b) seen_b=yes; ...;;
    ...
    esac
    ...
    
    if test -n "$seen_a" -a -n "$seen_b"; then
      echo "At most one of -a and -b can be given" 1>&2
      exit 1
    fi
    
    22.3.2010 20:53 Rogue | skóre: 4
    Rozbalit Rozbalit vše Re: Parametry
    Moc diky
    22.3.2010 21:06 Rogue | skóre: 4
    Rozbalit Rozbalit vše Re: Parametry
    Narazil jsem na další problém, potřebuji si vypsat poslední prametr programu, vím že proměnná $# nese v sobě počet zadaných paramaetrů.
    22.3.2010 21:35 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: Parametry
    echo "${${#}}"
    
    Fuky avatar 22.3.2010 21:47 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Parametry
    eval "last=\${$#}"
    echo $last
    
    Fuky avatar 22.3.2010 22:02 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Parametry

    Případně:

    echo ${!#}
    

    nebo:

    args=("$@")
    echo "${args[$(($#-1))]}"
    
    22.3.2010 22:02 Rogue | skóre: 4
    Rozbalit Rozbalit vše Re: Parametry
    Jsi si jistý že je to takto ?
    Fuky avatar 22.3.2010 21:41 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Parametry
    shift $(($#-1))
    echo $1
    
    22.3.2010 22:05 Rogue | skóre: 4
    Rozbalit Rozbalit vše Re: Parametry
    Díky moc, dokonalost tahle pomoc fakt dík.
    23.3.2010 12:12 Rogue | skóre: 4
    Rozbalit Rozbalit vše Re: Parametry
    Mohl by jsi to tochu objsanit, je to přesně to co jesem chtěl, ale nedokážu pochopit ten princip. Díky
    Fuky avatar 23.3.2010 12:45 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Parametry
    Co konkrétně potřebuješ objasnit, něco z příspěvku od l4m4?
    23.3.2010 13:34 Rogue | skóre: 4
    Rozbalit Rozbalit vše Re: Parametry
    Nechápu to vykonání té podmínky vzhledem k tomu že je na konci. Mám na to asi jinný pohled proto prosím o stručné vysvětlení. Díky
    Fuky avatar 23.3.2010 14:09 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Parametry

    Problém je v tomto případě rozdělen na dvě nezávislé části:

    1. v cyklu se načtou všechny argumenty příkazové řádky do proměných
    2. provede se kontrola kolize argumentů

    To může značně zpřehlednit kód. Důležité je, že v cyklu pro zpracování argumentů jen nastavuješ proměné, ale nevykonáváš zatím žádnou akci, právě proto si můžeš dovolit test kolize až za tímto cyklem.

    Ale lze to řešit i jinak, záleží na konkrétním návrhu logiky argumentů příkazové řádky. Např. pokud nechci společně použít argumenty -a, -b je zbytečné ukládat nastavení těchto argumentů do dvou proměných, ale stačí jedna proměná, která implicitně neobsahuje nic a před přiřazením hodnoty a nebo b se testuje zda-li je prázdná a teprve poté se provede přiřazení. Pokud prázdná není, tak může uživatel okamžitě dostat chybové hlášení, že nesmí používat společně argumenty -a, -b a program se může ukončit aniž by se pokračovalo v dalším zpracovávání argumentů.

    BTW: Pokud píšeš něco rozsáhlejšího, tak doporučuji zvážit použití Pythonu. Psát větší projekty v Bashi je cesta do pekel. A ani na ty menší se nevyplatí, pokud pro to nemáš nějaký opravdu pádný důvod.

    23.3.2010 16:57 Rogue | skóre: 4
    Rozbalit Rozbalit vše Re: Parametry
    Moc díky už to chápu :). Jinak v tom Pythonu s tebou souhlasím ve všech směrech. Bohužel pro BASH mám důvod proto tolik otázek, ale každopádně díky za odpovědi.
    23.3.2010 14:41 duigha
    Rozbalit Rozbalit vše Re: Parametry
    Na FITu začaly projekty? :)

    Založit nové vláknoNahoru

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

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