Rico Koerner <r...@netbreaker.de> (Mo 16 Jan 2012 17:31:00 CET): > Am 15.01.2012 21:10, schrieb Heiko Schlittermann: > > > > Vielleicht so: > > > > #! /bin/bash > > > > A="$1"; shift > > B="$1"; shift > > C="$1"; shift > > > > for VARNAME in A B C; do > > declare ${!VARNAME}="$value" > > done > > Soweit wollte ich nicht gehen, daß die übergebenen Parameter zu > Variablennamen werden, ist aber auch interessant. > > Ich war auf der Suche nach einer besseren Lösung für getopts, da dort > (zumindest aus meiner Sicht) ein paar Fehler drin stecken. > > while getopts a:b:c option ... > > getopts.sh -a Max Muster -b Musterstadt > Hier wird Muster verschluckt, was noch halbwegs verständlich ist. > > getopts.sh -a -b Musterstadt > Hier wird '-b' als Parameter von -a verstanden und -b existiert dann > nicht mehr als Option. Das finde ich nicht mehr ganz so sinnvoll.
Es ist das dokumentierte Verhalten von getopts. Woher soll es wissen, daß „-b“ nicht der erwartete Parameter zu „-a“ ist? Ein anderes Verhalten legt getopt(1) an den Tag. ./x -a -b hallo ./x -a knix -b knax ./x -aknix -b knax ---- #! /bin/bash # parameter to -a is optional, -b and -c require a parameter tmp=$(getopt --name $0 --options a::b:c: -- "$@") || exit eval set -- "$tmp" while :; do opt="$1"; shift case "$opt" in -a) echo "option a: <$1>";; -b) echo "option b: <$1>";; --) break;; esac done echo "rest: $@" ------
signature.asc
Description: Digital signature
_______________________________________________ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd