Portál AbcLinuxu, 4. července 2025 23:09
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
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.