Hi @all,
ich schreib gerade ein Skript, der mit 2 Paramerter aufgerufen werden darf aber mindest einen haben muss.
Das Eigentliche skript ist fertig, nun möchte ich jetzt eine Auswertung der Parameter vornehmen. Das wollte ich mit getopts lösen, aber ich bekomme das nicht gebacken, villeicht kann mir jemand Helfen ?
Das ist das Auswertunsskript:
Mein Problem liegt nun darin, ich möchte alle möglichen Eingabe bzw. Parameterfehler abfangen. Beim ausführen des Skripts mit absichtlich falschen eingaben passiert da gar nichts:
Die variable $OPTION wird mit einem Wert gefühlt ==> "?", Jetzt sollte die Case-Anweitung springen, tut sie aber nicht. Was mache ich falsch?
by mr_kaktus
ich schreib gerade ein Skript, der mit 2 Paramerter aufgerufen werden darf aber mindest einen haben muss.
Das Eigentliche skript ist fertig, nun möchte ich jetzt eine Auswertung der Parameter vornehmen. Das wollte ich mit getopts lösen, aber ich bekomme das nicht gebacken, villeicht kann mir jemand Helfen ?
Das ist das Auswertunsskript:
Code:
# Es muss mindestesns ein Argument übergeben werden
# --------------------------------------------------
if (( $# <= 0 )) ; then
usage $EXIT_ERROR
fi
#set -x
# Eläuterung der Schalter:
# -h ==> Hilfe
# -u ==> Username
# -g ==> Primary group
while getopts ':u:g:h' OPTION
do
case $OPTION in
u) USERNAME=$2
;;
g) GROUP="${4:-users}"
;;
h) usage $EXIT_SUCCESS
;;
\?) echo "Unbekannte Option \"-$OPTARG\"." >&2
usage $EXIT_ERROR
;;
:) echo "Option \"-$OPTARG\" benötigt ein Argument." >&2
usage $EXIT_ERROR
;;
*) echo "Dies kann eigentlich gar nicht passiert sein..." >&2
usage $EXIT_BUG
;;
esac
done
echo "\$OPTION ==> $OPTION"
echo "\$USERNAME ==> $USERNAME"
echo "\$GROUP ==> $GROUP"
# Verbrauchte Argumente überspringen
shift $(( OPTIND - 1 ))
Code:
./mkhome.sh a
$OPTION ==> ?
$USERNAME ==>
$GROUP ==>
by mr_kaktus