Fehlende Argumente bei getopts

R

Robby-TX5

Grünschnabel
Hi,

ich mmuss beim Programmaufruf mehrere Parameter angeben. Mit getops überprüfe ich die Argumente, die zwingend sind. Wenn ich ein Argument weglasse, macht getopt - entgegen allen Howtos - weiter. Ein beispiel:

Code:
function fnStart
{
set -x
EINGABE=`getopt -o N:S:n:  -n 'example.bash' -- "$@"`

[[ $? != 0 ]] &&  { echo "Terminating..." >&2 ; exit 1 ; }

eval set -- "${EINGABE}"

while true; do

   case "$1" in
     -N) Name="$2" ; shift 2 ;;
     -S) Strasse="$2" ; shift 2 ;;
     -n) Nummer="$2" ; shift 2 ;;
     --) shift; break ;;
     *) echo "alles falsch hier"
        exit 101 ;;
   esac
done

Wird diese Funktion nur mit "-S" aufgerufen ohne Angabe eines Argumentes, dann kommt ein ordentliche Fehlermeldung:

Code:
./parsing.sh -S
Remaining arguments:
--> `-S'
++ getopt -o S:M:N: -n example.bash -- -S
example.bash: Diese Option benötigt ein Argument -- »S«

Einfunktionsaufruf mit "-N -S Hautpstraße" macht folgendes:

Code:
 ./parsing.sh -N -S Hautpstrasse
Remaining arguments:
--> `-N'
--> `-S'
--> `Hautpstrasse'
++ getopt -o N:S:n: -n example.bash -- -N -S Hautpstrasse
+ EINGABE=' -N '\''-S'\'' -- '\''Hautpstrasse'\'''
+ [[ 0 != 0 ]]
+ eval set -- ' -N '\''-S'\'' -- '\''Hautpstrasse'\'''
++ set -- -N -S -- Hautpstrasse
+ true
+ case "$1" in
+ NAME=-M

Kurzum; meine Funktion erkennt nicht, dass ein Argument weggelassen wurde und "füllt" stattdessen mit der nächsten Option auf. Damit werden natürlich alle nachfolgenden Fehlerroutinen unterlaufen.

Ich bin für jeden Tipp dankbar.

Robby
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Hi,

mittlerweile habe ich rausgefunden, dass mein Problem wohl die Schwachstelle des "getopt" ist. Meine Lösung: ich untersuche den String der Variable $2 auf negative Vorzeichen. Damit funktioniert das halbwegs sauber, solange der DAU nicht versucht Namen mit einem vorangestellten "-" einzugeben.

Code:
[[ $(echo "$2" | cut -c1) = "-" ]] && { printf "\n Fehlendes Argument fuer Paramter \"$1\" \n" ; fnSyntax ; }

Wenn noch jemand eine bessere Idee hat, immer raus damit. ;-)

Robby
 
Zuletzt bearbeitet:

Ähnliche Themen

ip6tables Problem

HandbrakeCLI Shell Skript

Queue für copy Script

Shellskript - Fehler in Cron

verzeichniss suche funktioniert nicht

Zurück
Oben