Portál AbcLinuxu, 11. prosince 2025 22:05
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:
Děkuji!!!
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.