Provided by: util-linux-locales_2.39.3-9ubuntu6.3_all 

BEZEICHNUNG
getopt - Befehlsoptionen auswerten (erweitert)
ÜBERSICHT
getopt Optionszeichenkette Parameter
getopt [options] [--] Optionszeichenkette Parameter
getopt [Optionen] -o|--options Optionszeichenkette [Optionen] [--] Parameter
BESCHREIBUNG
getopt wird dazu verwendet, Optionen in Befehlszeilen für die leichtere Auswertung durch Shell-Prozeduren
auseinanderzunehmen und auf gültige Optionen zu prüfen. Es verwendet hierfür die Routinen GNU getopt(3).
Die mit getopt aufgerufenen Parameter können in zwei Teile zerlegt werden: Optionen, die die Auswertung
durch getopt verändern (die Optionen und die Optionszeichenkette in der ÜBERSICHT) und den Parametern,
die ausgewertet werden sollen (Parameter in der ÜBERSICHT). Der zweite Teil beginnt beim ersten von einer
Option verschiedenen Parameter, der kein Argument für eine Option ist, oder nach dem ersten Auftreten von
»--«. Falls im ersten Teil weder die Option -o noch --options gefunden wird, wird der erste Parameter des
zweiten Teils als kurze Optionszeichenkette verwendet.
Falls die Umgebungsvariable GETOPT_COMPATIBLE gesetzt ist oder der erste Parameter keine Option ist (er
beginnt nicht mit »-«, dem ersten Format in der ÜBERSICHT), wird getopt Ausgaben erzeugen, die zu denen
anderer Versionen von getopt(1) kompatibel sind. Es wird weiterhin Parameter tauschen und optionale
Argumente erkennen (siehe Abschnitt KOMPATIBILITÄT für weitere Informationen).
Traditionelle Implementierungen von getopt(1) sind nicht in der Lage, mit Leerräumen und anderen
(Shell-spezifischen) Sonderzeichen in Argumenten und in von Optionen verschiedenen Parametern umzugehen.
Um dieses Problem zu lösen, kann diese Implementierung maskierte Ausgaben erzeugen, die erneut durch die
Shell (normalerweise mittels des Befehls eval) interpretiert werden müssen. Damit werden diese Zeichen
erhalten. Sie müssen aber getopt dergestalt aufrufen, dass es nicht mehr zu anderen Versionen kompatibel
ist (das zweite oder dritte Format in der ÜBERSICHT). Um zu prüfen, ob bei Ihnen diese erweiterte Version
von getopt(1) installiert ist, kann eine spezielle Test-Option (-T) verwendet werden.
OPTIONEN
-a, --alternative
erlaubt es, lange Optionen mit einem einfachen »B*-*« zu beginnen.
-l, --longoptions Langoptionen
Die lange (Mehrzeichen-)Option, die erkannt werden soll. Es kann mehr als ein Optionsnamen auf einmal
angegeben werden, indem die Namen durch Kommata getrennt werden. Diese Option kann mehr als einmal
verwandt werden, die Langoptionen sind kumulativ. Jeder lange Optionsname in Langoptionen darf durch
einen Doppelpunkt gefolgt werden, um anzuzeigen, dass er ein zwingend verlangtes Argument hat, und
durch zwei Doppelpunkte, um anzuzeigen, dass er ein optionales Argument hat.
-n, --name Programmname
Der Name, der von den getopt(3)-Routinen beim Berichten von Fehlern verwandt wird. Beachten Sie, dass
Fehler von getopt(1) weiterhin als von Getopt-kommend berichtet werden.
-o, --options Kurzoptionen
gibt die kurzen (ein-Zeichen)-Optionen an, die erkannt werden sollen. Falls diese Option nicht
gefunden wird, wird der erste Parameter von getopt, der nicht mit »-« startet (und kein
Optionsargument ist), als die Kurzoptionszeichenkette verwendet. Jedes Kurzoptionszeichen in den
Kurzoptionen kann von einem Doppelpunkt gefolgt werden, um anzuzeigen, dass er ein verpflichtendes
Argument hat, und von zwei Doppelpunkten, um anzuzeigen, dass er ein optionales Argument hat. Das
erste Zeichen der Kurzoptionen kann ein »+« oder »-« sein, um zu beinflussen, wie die Optionen
ausgewertet und die Ausgabe generiert wird (siehe Abschnitt EINLESE-MODI für Details).
-q, --quiet
deaktivert Fehlermeldung durch getopt(3).
-Q, --quiet-output
erzeugt keine normale Ausgabe. Fehler werden durch getopt(3) gemeldet, außer Sie verwenden auch -q.
-s, --shell Shell
setzt die Maskierungsoptionen auf die der Shell. Falls die Option -s nicht angegeben ist, werden die
Konventionen der BASH verwendet. Gültige Argumente sind derzeit »sh«, »bash«, »csh« und »tcsh«.
-T, --test
prüft, ob Ihr getopt(1) diese erweiterte Version oder eine alte Version ist. Dies erzeugt keine
Ausgabe und setzt den Fehlerstatus auf 4. Andere Implementierungen von getopt(1) und diese Version,
falls die Umgebungsvariable GETOPT_COMPATIBLE gesetzt ist, liefern »--« und einen Fehlerstatus von 0.
-u, --unquoted
maskiert die Ausgabe nicht. Beachten Sie, dass Leerraum und besondere (Shell-abhängige) Zeichen in
diesem Modus zu Chaos führen können (wie sie dies auch in anderen Implementierungen von getopt(1)
erzeugen).
-h, --help
zeigt einen Hilfetext an und beendet das Programm.
-V, --version
zeigt Versionsinformationen an und beendet das Programm.
AUSWERTUNG
Dieser Abschnitt gibt das Format des zweiten Teils der Parameter von getopt (den Parametern in der
ÜBERSICHT) an. Der nächste Abschnitt (AUSGABE) beschreibt die erstellte Ausgabe. Diese Parameter waren
typischerweise die, mit denen eine Shell-Funktion aufgerufen wurde. Sie müssen darauf achten, dass jeder
Parameter, mit dem eine Shell-Funktion aufgerufen wurde, genau einem Parameter in der Parameterliste von
getopt entspricht (siehe BEISPIELE). Die gesamte Auswertung erfolgt in den GNU getopt(3)-Routinen.
Die Parameter werden von links nach rechts ausgewertet. Jeder Parameter wird als Kurzoption, als
Langoption, als Argument für eine Option oder als Nichtoptionsparameter eingestuft.
Eine einfache Kurzoption ist ein »-« gefolgt von einem Kurzoptionszeichen. Falls die Option ein
zwingendes Argument hat, darf es direkt nach dem Optionszeichen oder als nächster Parameter (d.h.
getrennt durch Leerraumzeichen auf der Befehlszeile) geschrieben werden. Falls die Option ein optionales
Argument hat, muss es sofern vorhanden direkt nach dem Optionszeichen geschrieben werden.
Es ist möglich, mehrere Kurzoptionen nach einem »-« anzugeben, solange alle (außer möglicherweise dem
letzten) keine zwingenden oder optionalen Argumente haben.
Eine Langoption beginnt normalerweise mit »--«, gefolgt von dem Namen der Langoption. Falls die Option
ein Argument zwingend benötigt, darf dieses direkt nach dem Namen der Langoption, getrennt durch ein »=«,
oder als das nächste Argument (d.h. getrennt durch Leerraumzeichen auf der Befehlszeile) geschrieben
werden. Falls die Option ein optionales Argument hat, muss es, falls vorhanden, direkt nach dem Namen der
Langoption, getrennt durch ein »=« geschrieben werden. Falls Sie das »=« hinzufügen, aber nichts
dahinter, wird es so interpretiert, als ob kein Argument vorhanden wäre; dies ist ein kleiner Fehler,
siehe FEHLER. Langoptionen dürfen abgekürzt werden, so lange die Abkürzung noch eindeutig ist.
Jeder Parameter, der nicht mit einem »-« anfängt und kein zwingendes Argument einer vorherigen Option
ist, ist ein Nichtoptionsparameter. Jeder Parameter nach einem »--«-Parameter wird immer als
Nichtoptionsparameter interpretiert. Falls die Umgebungsvariable POSIXLY_CORRECT gesetzt ist oder falls
die Kurzoptionszeichenkette mit einem »+« anfängt, werden alle verbliebenen Parameter als
Nichtoptionsparameter interpretiert, sobald der erste Nichtoptionsparameter gefunden wird.
AUSGABE
Für jedes im vorherigen Abschnitt beschriebene Element wird eine Ausgabe erstellt. Die Ausgabe erfolgt in
der Reihenfolge, in der die Elemente in der Eingabe vorliegen, außer für Nichtoptionsparameter. Die
Ausgabe kann im kompatiblen (nicht maskierten) Modus erfolgen, oder so, dass Leerraum und andere
besondere Zeichen innerhalb von Argumenten und Nichtoptionsparametern erhalten werden (siehe MASKIEREN).
Wenn die Ausgabe in einem Shell-Skript verarbeitet wird, wird sie so erscheinen, als ob sie aus
getrennten Elementen bestünde, die einer nach dem anderen verarbeitet werden können (in den meisten
Shell-Sprachen mittels des Befehls »shift«). Im nicht maskierten Modus ist das nicht perfekt, da Elemente
an unerwarteten Stellen aufgetrennt sein können, falls sie Leerraum oder besondere Zeichen enthalten.
Falls es beim Auswerten der Parameter Probleme gibt, beispielsweise ein zwingendes Argument nicht
gefunden oder eine Option nicht erkannt wird, wird ein Fehler auf Stderr berichtet. Es wird auch keine
Ausgabe des betroffenen Elements geben und ein von Null verschiedener Fehlerstatus wird zurückgeliefert.
Für eine Kurzoption wird ein einzelnes »-« und das Optionszeichen als ein Parameter erstellt. Falls die
Option ein Argument hat, wird der nächste Parameter das Argument sein. Falls die Option ein optionales
Argument hat, aber keines gefunden wurde, wird der nächste Parameter erstellt, aber im maskierten Modus
leer sein. Im nicht maskierten (kompatibilitäts-)Modus wird kein zweiter Parameter erstellt. Beachten
Sie, dass viele andere getopt(1)-Implementierungen optionale Argumente nicht unterstützen.
Falls mehrere Kurzoptionen nach einem einzelnen »-« angegeben wurden, wird jede in der Ausgabe als
separater Parameter vorhanden sein.
Für eine Langoption werden »--« und der komplette Optionsname als ein Parameter erstellt. Dies erfolgt
unabhängig davon, ob die Option abgekürzt war oder mit einem einzelnen »-« in der Eingabe angegeben
wurde. Argumente werden wie bei den Kurzoptionen gehandhabt.
Normalerweise wird keine Ausgabe für die Nichtoptionsparameter erstellt, bis alle Optionen und ihre
Argumente erstellt wurden. Dann wird »--« als einzelner Parameter und danach werden die
Nichtoptionsparameter in der gefundenen Reihenfolge, jeder als separater Parameter, erstellt. Nur falls
das erste Zeichen der Kurzoptionszeichenkette ein »-« war, wird die Ausgabe der Nichtoptionsparameter an
der Stelle erstellt, an der sie in der Eingabe gefunden wurden (dies wird nicht unterstützt, falls das
erste Format in der ÜBERSICHT verwendet wird; in diesem Fall werden alle vorangestellten »-« und »+«
ignoriert).
MASKIEREN
Im Kompatibilitätsmodus werden Leerraumzeichen und »besondere« Zeichen in Argumenten nicht richtig
behandelt. Da die Ausgabe an das Shell-Skript übergeben wird, weiß das Skript nicht, wie es die Ausgabe
in separate Parameter zerlegen soll. Um dieses Problem zu umgehen, bietet diese Implementierung das
Maskieren an. Die Idee ist, dass die Ausgabe mit Anführungszeichen um jeden Parameter erstellt wird. Wenn
diese Ausgabe wieder an eine Shell (normalerweise mit dem Befehl eval einer Shell) übergeben wird, wird
sie korrekt in separate Parameter zerlegt.
Falls die Umgebungsvariable GETOPT_COMPATIBLE gesetzt ist, die erste Form der ÜBERSICHT verwendet oder
die Option -u gefunden wird, wird Maskieren nicht aktiviert.
Verschiedene Shells verwenden verschiedene Maskierungskonventionen. Sie können die Option -s verwenden,
um die von Ihnen verwendete Shell auszuwählen. Die folgenden Shells werden derzeit unterstützt: »sh«,
»bash«, »csh« und »tcsh«. Tatsächlich werden nur zwei »Varianten« unterschieden: Sh-artige
Maskierungskonventionen und Csh-artige Maskierungskonventionen. Es ist gut möglich, dass eine dieser
Varianten verwendet werden kann, falls sie eine andere Shell-Skript-Sprache verwenden.
EINLESE-MODI
Das erste Zeichen der Zeichenkette von Kurzoptionen kann ein »-« oder ein »+« sein, um einen speziellen
Einlese-Modus anzugeben. Wenn die erste Form verwendet wird, die unter ÜBERSICHT angegeben ist, werden
sie ignoriert. Trotzdem wird die Umgebungsvariable POSIXLY_CORRECT ausgewertet.
Wenn das erste Zeichen ein »B*+*« ist oder die Umgebungsvariable POSIXLY_CORRECT gesetzt ist, wird die
Auswertung beendet, sobald der erste Nichtoptionsparameter (also ein Parameter, der nicht mit einem »-«
beginnt) erkannt wird, der kein Optionsargument ist. Die restlichen Parameter werden alle als
Nichtoptionsparameter interpretiert.
Wenn das erste Zeichen ein »-« ist, werden Nichtoptionsparameter an der Stelle ausgegeben, an der sie
gefunden werden. Im normalen Modus werden sie alle am Ende der Ausgabe gesammelt, nachdem ein
»--«-Parameter erzeugt wurde. Beachten Sie, dass dieser »--«-Parameter weiterhin erzeugt wird, aber immer
der letzte Parameter in diesem Modus ist.
KOMPATIBILITÄT
Diese Version von getopt(1) wurde so geschrieben, dass sie so weit wie möglich kompatibel zu anderen
Versionen ist. Normalerweise können Sie andere Versionen ohne Änderungen einfach durch diese Version
ersetzen und haben dadurch sogar noch einige Vorteile.
Wenn das erste Zeichen des ersten Parameters von getopt kein »-« ist, läuft getopt im
Kompatibilitätsmodus. Es interpretiert den ersten Parameter als Zeichenkette von Kurzoptionen und alle
weiteren Parameter werden ausgewertet. Es ändert die Reihenfolge der Parameter (d.h. alle
Nichtoptionsparameter werden am Ende ausgegeben), es sein denn, die Umgebungsvariable POSIXLY_CORRECT ist
gesetzt. In diesem Fall stellt getopt den Kurzoptionen automatisch ein »+« voran.
Die Umgebungsvariable GETOPT_COMPATIBLE zwingt getopt in den Kompatibilitätsmodus. Wenn sowohl diese
Umgebungsvariable als auch POSIXLY_CORRECT gesetzt sind, kann 100% Kompatibilität für »schwierige«
Programme erreicht werden. Normalerweise ist allerdings keine von beiden notwendig.
Im Kompatibilitätsmodus werden führende »-«- und »+«-Zeichen in der Kurzoptionen-Zeichenkette ignoriert.
RÜCKGABEWERTE
getopt gibt den Fehlerstatus 0 bei einer erfolgreichen Auswertung zurück, 1, falls getopt(3) Fehler
zurückliefert, 2, falls es die eigenen Parameter nicht auswerten kann, 3, falls ein interner Fehler wie
fehlender Speicher auftritt und 4, falls es mit -T aufgerufen wird.
BEISPIELE
Beispielskripte für (ba)sh und (t)csh sind in der getopt(1)-Distribution enthalten und werden optional im
Verzeichnis /usr/share/doc/util-linux installiert.
UMGEBUNGSVARIABLEN
POSIXLY_CORRECT
Diese Umgebungsvariable wird von den getopt(3)-Routinen untersucht. Falls sie gesetzt ist, wird die
Auswertung gestoppt, sobald ein Parameter gefunden wird, der weder eine Option noch ein
Optionsargument ist. Alle restlichen Parameter werden ebenfalls als Nichtoptionsparameter
interpretiert, unabhängig davon, ob sie mit einem »-« beginnen oder nicht.
GETOPT_COMPATIBLE
erzwingt, dass getopt das erste in der ÜBERSICHT angegebene Aufrufformat verwendet.
FEHLER
getopt(3) kann Langoptionen mit optionalen Argumenten auswerten, denen ein leeres optionales Argument
übergeben wurde. Allerdings kann es das für Kurzoptionen nicht. Dieses getopt(1) behandelt optionale
Argumente, die leer sind, so, als wären sie nicht übergeben worden.
Die Syntax ist nicht sehr intuitiv, wenn man keinerlei Kurzoptionen haben möchte (sie müssen explizit auf
eine leere Zeichenkette gesetzt werden).
AUTOR
Frodo Looijaard <frodo@frodo.looijaard.name>
SIEHE AUCH
bash(1), tcsh(1), getopt(3)
FEHLER MELDEN
Nutzen Sie zum Melden von Fehlern das Fehlererfassungssystem auf
https://github.com/util-linux/util-linux/issues.
VERFÜGBARKEIT
Der Befehl getopt ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv
<https://www.kernel.org/pub/linux/utils/util-linux/> heruntergeladen werden kann.
util-linux 2.39.3 2025-06-05 GETOPT(1)