getopts(1) getopts(1)
NAME
getopts - Argumente einer Prozedur nach Optionen durchsuchen
SYNTAX
getopts optstring name [arg ...]
BESCHREIBUNG
Das in die Shell sh bzw. ksh eingebaute Kommando getopts wird in
Shell-Prozeduren verwendet, um die Argumente und Optionen in der Kom-
mandozeile zu analysieren und auf Gültigkeit zu überprüfen. Alle
Regeln des Syntax-Standards für Kommandozeilen werden unterstützt.
getopts ersetzt das ältere Kommando getopt(1), das in zukünftigen
Betriebssystemversionen nicht mehr unterstützt werden wird. Daher
sollten Sie immer getopts statt getopt verwenden. Vorhandene Shell-
Prozeduren können Sie mit getoptcvt(1) von getopt auf getopts umstel-
len.
getopts können Sie in Shell-Prozeduren zur Analyse der beim Prozedur-
aufruf angegebenen Argumente verwenden. Die einzelnen Optionen und
Argumente werden der Reihe nach in Shell-Variablen abgelegt und können
so einfach abgefragt bzw. überprüft werden. Wenn in der Argumentliste
eine Option nicht zulässig ist oder wenn getopts für eine Option, die
ein Argument verlangt, kein zugehöriges Argument erkennt, dann gibt
getopts eine entsprechende Fehlermeldung aus.
Damit alle Prozeduren und Kommandos die Argumentliste einheitlich ver-
arbeiten, sollte die Argumentliste immer mit getopts analysiert und
auf gültige Optionen untersucht werden.
ARGUMENTE
optstring
Zeichenkette, die aus Buchstaben und Doppelpunkten : bestehen
kann. Die in optstring angegebenen Buchstaben werden von getopts
als zulässige Optionen der Shell-Prozedur betrachtet. Wenn hinter
einem Buchstaben ein Doppelpunkt steht, so erwartet getopts für
diese Option ein Argument oder eine Gruppe von Argumenten, die
durch Leerzeichen oder Tabulatorzeichen von der Option getrennt
sein müssen.
name Name der Shell-Variablen, die bei jedem Aufruf von getopts mit
der jeweils nächsten Option belegt wird.
arg ...
Argumentliste, die von getopts analysiert wird.
arg nicht angegeben:
getopts analysiert die Argumentliste der Kommandozeile, mit der
die Prozedur aufgerufen wurde.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
getopts(1) getopts(1)
ARBEITSWEISE
Bei jedem Aufruf von getopts wird die Shell-Variable name mit dem Wert
der jeweils nächsten Option belegt. Die Shell-Variable OPTIND wird mit
der Nummer des nächsten Arguments belegt, das noch nicht verarbeitet
wurde. OPTIND wird immer mit dem Wert 1 initialisiert, wenn der Kom-
mandointerpreter Shell oder eine Shell-Prozedur aufgerufen wird.
Bei Optionen, die ein Argument verlangen, wird die Shell-Variable
OPTARG mit diesem Argument belegt. Optionen, die ein Argument verlan-
gen, müssen in optstring mit einem Doppelpunkt : gekennzeichnet sein.
Wird eine ungültige Option erkannt, so wird die Shell-Variable name
mit einem Fragezeichen ? belegt. Ungültige Optionen sind solche, die
nicht in optstring vorkommen.
Wenn das Ende der Optionsliste erreicht wurde, beendet sich getopts
mit einem Endestatus ungleich Null. Das Ende der Optionsliste kann
auch mit der speziellen Option -- gekennzeichnet werden.
Wird der Wert der Shell-Variablen OPTIND verändert oder getopts mit
unterschiedlichen Argumentlisten aufgerufen, so kann dies zu unerwar-
teten Ergebnissen führen.
INTERNATIONALE UMGEBUNG
Die Umgebungsvariable LCMESSAGES bestimmt die Sprache der Meldungs-
texte. Wenn LCMESSAGES nicht oder als leere Zeichenkette definiert
ist, wird der Wert von LANG als Standardwert herangezogen. Ist auch
LANG nicht oder als leere Zeichenkette definiert, verhält sich das
System so, als wäre es nicht internationalisiert.
BEISPIELE
Der folgende Ausschnitt aus einer Shell-Prozedur proz zeigt, wie die
Argumente einer Prozedur verarbeitet werden können. Für proz sind die
Optionen -a, -b und -o zulässig, für -o ist ein Argument erforderlich.
Die Optionen -a und -b schließen sich gegenseitig aus; werden trotzdem
beide angegeben, ist nur die zuletzt angegebene gültig:
while getopts abo: c
do
case $c in
a | b) FLAG=$c;;
o) OARG=$OPTARG;;
\?) echo "usage: $0 [-a | -b] [-o <arg>]"
exit 2;;
esac
done
shift `expr $OPTIND - 1`
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
getopts(1) getopts(1)
Durch dieses Programmstück sind z. B. die folgenden Aufrufe von proz
gleichbedeutend:
proz -a -b -o "xxx z yy" datei
proz -a -b -o "xxx z yy" -- datei
proz -ab -o xxx,z,yy datei
proz -ab -o "xxx z yy" datei
proz -o xxx,z,yy -b -a datei
HINWEISE
getopts existiert sowohl als externes Kommando (/usr/bin/getopts) als
auch als eingebautes Shell-Kommando (Built-in), und zwar sowohl der
Korn-Shell ksh(1) wie auch der Bourne-Shell sh(1). Für die Ausführung
von /usr/bin/getopts erzeugt die Shell einen neuen Prozeß.
Bei der Verwendung von getopts können sich Abweichungen im Verhalten
ergeben, je nachdem, welche Shell benutzt wird. Die möglichen Abwei-
chungen sind nicht eigens beschrieben.
SIEHE AUCH
getopt(1), getoptcvt(1), ksh(1), sh(1).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98