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:45 | Zajímavý software

Na blogu Qt bylo představeno Qt 3D Studio. Jedná se o produkt dosud známý pod názvem NVIDIA DRIVE™ Design Studio. NVIDIA jej věnovala Qt. Jedná se o několik set tisíc řádků zdrojového kódu. Qt 3D Studio bude stejně jako Qt k dispozici jak pod open source, tak pod komerční licencí. Ukázka práce s Qt 3D Studiem na YouTube.

Ladislav Hagara | Komentářů: 3
včera 17:50 | Komunita

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice slaví 5 let od svého oficiálního vzniku. Nadace byla představena 28. září 2010. Formálně byla založena ale až 17. února 2012.

Ladislav Hagara | Komentářů: 0
včera 12:50 | Komunita

Mozilla.cz informuje, že dosud experimentální funkce Page Shot z programu Firefox Test Pilot (zprávička) se stane součástí Firefoxu. Page Shot je nástroj pro vytváření snímků webových stránek. Umí výběr oblasti, prvku stránky (např. odstavce), nebo uložení snímku celé stránky. Snímky lze ukládat na disk nebo nahrávat na server Mozilly. Nedávno bylo oznámeno, že se součástí Firefoxu stane Activity Stream.

Ladislav Hagara | Komentářů: 23
včera 04:10 | Nová verze

Po 10 týdnech vývoje od vydání Linuxu 4.9 (zprávička) oznámil Linus Torvalds, mj. již 20 let žijící v USA, vydání Linuxu 4.10 (LKML). Přehled nových vlastností a vylepšení například na Kernel Newbies a v Jaderných novinách (1, 2 a 3). Kódové jméno Linuxu 4.10 je Fearless Coyote.

Ladislav Hagara | Komentářů: 8
19.2. 15:55 | Zajímavý projekt

Vyzkoušet si příkazy a vyřešit několik úkolů lze na stránkách Commandline Challenge (CMD Challenge). Úkoly lze řešit různými způsoby, důležitý je výsledek. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

Ladislav Hagara | Komentářů: 18
18.2. 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 32
17.2. 15:30 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje, že bezpečnostní experti objevili nový typ malwaru, jenž cílí na open source e-commerce platformu Magento. Malware je zajímavý tím, že se jedná o první svého druhu, jehož kód zůstává skrytý v SQL databázi zasaženého e-shopu. Škodlivý kód je volán pomocí tzv. SQL trigerru, který je spouštěn při každém vytvoření objednávky v systému.

Ladislav Hagara | Komentářů: 3
17.2. 09:00 | Nová verze

Bylo vydáno Ubuntu 16.04.2 LTS, tj. druhé opravné vydání Ubuntu 16.04 LTS s kódovým názvem Xenial Xerus. Přehled novinek v poznámkách k vydání a v přehledu změn.

Ladislav Hagara | Komentářů: 60
17.2. 06:00 | Zajímavý článek

Pavel Tišnovský se v dvoudílném článku na MojeFedora.cz věnuje tvorbě pluginů (modulů) pro bitmapový grafický editor GIMP. Pomocí pluginů lze GIMP rozšiřovat o další funkce. Implementovat lze například nové filtry nebo pomocné utility pro tvorbu animací či poloautomatickou retuš snímků.

Ladislav Hagara | Komentářů: 6
16.2. 23:32 | Komunita

Do 30. března se lze přihlásit do dalšího kola programu Outreachy, jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 30. května do 30. srpna 2017, v participujících organizacích lze vydělat 5 500 USD. Jedná se již o 14. kolo tohoto programu.

Ladislav Hagara | Komentářů: 11
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 671 hlasů
 Komentářů: 61, poslední dnes 13:06
Rozcestník
Reklama

Dotaz: Parametry

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

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: 48
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.