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.
Mein Ansatz hat sicher auch noch Schwächen, löst aber die beiden
Probleme. Mal sehen, wann ich auf andere Probleme stoße.
#!/bin/bash
OPTVAR="REST"
while [ $# -gt 0 ]; do
if [ "$1" == "${1#-*}" ]; then
echo "Param: $1 >> ${OPTVAR}"
if [ -n "${!OPTVAR}" ]; then
eval "${OPTVAR}=${!OPTVAR}\ $1"
else
eval ${OPTVAR}="$1"
fi
shift
else
echo "option: $1"
case "$1" in
-a)
OPTVAR="A"
;;
-b)
OPTVAR="B"
;;
-c)
C="TRUE"
OPTVAR="REST"
;;
-? | --help)
echo "HELP"
exit
;;
esac
shift
fi
done
for OPTVAR in A B REST; do
echo "${OPTVAR}: ${!OPTVAR}"
done
Rico
smime.p7s
Description: S/MIME Kryptografische Unterschrift
_______________________________________________ Lug-dd maillist - [email protected] https://ssl.schlittermann.de/mailman/listinfo/lug-dd
