Hallo David, hallo Liste, * David Haller schrieb am 17.Jul.2001:
On Mon, 16 Jul 2001, Norbert Kordts wrote:
Jau! Genauer, alle Programme, die mit der GNU-Version (POSIX) von getopt ihre Komandozeile parsen. Siehe man 1 getopt, man 3 getopt und Verwandte.
Mit getopt(1) hast du lafuernich recht (aber auch das ist nicht grad einfach zu verstehen) :))
getopt ab:cdef: -ad -cbParam1 -f Param2 Arg1 Arg2 liefert: -a -d -c -b Param1 -f Param2 -- Arg1 Arg2 Die Options, die man bei Linux getrennt oder zusammen angeben kann werden auseinandergezogen und erhalten alle ein - davor. Was eine Option ist, daß wird getopt im ersten Argument mitgegeben. Dort werden einfach alle Options, die möglich sind in beliebiger Reihenfolge aufgeführt. Options, die zwingend einen Parameter brauchen werden mit einem nachfoldgenden : gekennzeichnet. Alles was nach diesem ersten Argument noch an Argumente kommt wird ausgewertet. Als Ausgabe gibt es die Befehlszeile in Ordentlich: Jede Option wird einzeln dargestellt und erhält sein eigenes -. Die Parameter werden durch ein Leerzeichen getrennt von der Option ausgegeben. Die übrigen Argumente werden durch ein -- von den Option getrennt. Die einfachste und beste Möglichkeit getopt anzuwenden ist es in einem set einzusetzen: set -- `getopt Options "$@"` Wobei Options für den Optionstring steht. Im obigen Beispiel ist es ab:cdef: Wenn man das in seinem Skript am Anfang hinschreibt, bevor die Positionsvariablen angefaßt werden, ist es so als hätte der Anwender die Options einzeln eingegeben, Parameter als eigenes Argumen nach dem jeweiligen Optionbuchstaben gestellt und die eigentlichen Argumente von den Options durch ein -- abgetrennt. Ich schreibe diese getopt-Zeile, wenn ich sie verwende, immer gleich nach den Variabelndefinitonen. Die Options sind dann leicht mit einem case abzurufen: case $1 in -a) Aktionen wenn Option a verwendet; shift ;; -b) PARAM=$2; Aktionen wenn Option b verwendet shift;shift ;; ... --) shift; break ;; -*) echo $0: falsche Option; exit 1 ;; *) echo $0: interner Syntaxfehler; exit 4 ;; esac Hier geht es weiter. Die Options sind nun aus den Argumenten herausgenommen. In $1 steht das erste eigentliche Argument. Das ist das alte getopt. GNU hat noch lange Optionnamen hinzugefügt und bedingte Parameter, das heißt Parameter, die da sein können aber nicht müßen. Aber damit kenne ich mich auch nicht aus. Bernd -- ACK = ACKnowledge = Zustimmung | NAC = No ACknowledge = keine Zustimmung DAU = Dümmster Anzunehmender User | LOL = Laughing Out Loud = Lautes Lachen IIRC = If I Remember Correctly = Falls ich mich richtig erinnere OT = Off Topic = Am Thema (der Liste) vorbei |Zufallssignatur 11