Portál AbcLinuxu, 4. července 2025 23:09

Prametry v BASHi? Snadno a konfortně!

9.2.2005 18:55 | Přečteno: 2408× | BASH | poslední úprava: 11.2.2005 12:28

Občas je potřeba udělat ve scriptu zpracování parametrů a když už, tak pořádně. Nejdřív jsem to dělal všechno přes bash a jeho expanze a dokázal jsem si udělat prakticky cokoli, co jsem si usmyslel, ale bylo to trošku nepřehledné a pracné. A pak jsem objevil getopt (getopts v bashi je taková hračka, která mě teda rozhodně neuspokojila). V Debianu je součástí balíčku util-linux a měl by ho mít snad každý. Přečtení manuálové stránky mi nestačilo k úplnému pochopení, ale tutoriál s balíčkem dodaný už stačil. Takže jak na to?:

#!/usr/bin/env bash

usage (){
cat <<EOF
Nějaká ta nápověda
EOF
exit 1
}

# Defaults
xlabel='$t[s]$'
ylabel='$U[V]$'

# Getopts
params=$(getopt -n "${0##*/}"\
  -l outside,file:,xlabel:,ylabel:,debug\
  -o of:x:y:d -- "$@")
[ $? != 0 ] && usage

# Odstranit apostrofy - důležité a hodit do parametrů bashe
eval set -- "$params"
unset params

# Zpracování parametrů
while :
do
  case "$1" in
    -o|--outside) outside='set key outside' ;;
    -f|--file) shift; output="$1";;
    -x|--xlabel) shift; xlabel="$1";;
    -y|--ylabel) shift; ylabel="$1";;
    -d|--debug) debug=1;;
    --) shift; break ;;
    *) echo "${0##*/}: Internal Error: Inconsistent getopt params!"; exit 2;;
  esac
  shift
done

# A tady je v parametrech jen zbytek

       

Hodnocení: 100 %

        špatnédobré        

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

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

9.2.2005 19:26 © | skóre: 37 | blog: escaped
Rozbalit Rozbalit vše Super!
Odpovědět | Sbalit | Link | Blokovat | Admin
Super! Líbí! A moc! To jsem totiž zrovna potřeboval. :-) Děkuji!!!
7.6.2005 01:46 Michal K.
Rozbalit Rozbalit vše "${0##*/}" - co to přesně je?
Odpovědět | Sbalit | Link | Blokovat | Admin
Dobrý den,

chtěl jsem se zeptat, co přesně vrací ${0##*/}

Díky za odpověď, Michal K.
6.1.2006 15:46 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: "${0##*/}" - co to přesně je?
Jméno spuštěného scriptu bez cesty.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.