.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993, Thomas Koenig .\" Copyright 2006-2008, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getopt 3 "8. Februar 2026" "Linux man\-pages 6.18" .SH BEZEICHNUNG getopt, optarg, optind, opterr, optopt \- Befehlszeilenoptionen auswerten .SH BIBLIOTHEK Standard\-C\-Bibliothek (\fIlibc\fP,\ \fI\-lc\fP) .SH ÜBERSICHT .nf \fB#include \fP .P \fBint getopt(int \fP\fIargz\fP\fB, char *\fP\fIargv\fP\fB[],\fP \fB const char *\fP\fIoptzeichenk\fP\fB);\fP .P \fBextern char *\fP\fIoptarg\fP\fB;\fP \fBextern int \fP\fIoptind\fP\fB, \fP\fIoptfeh\fP\fB, \fP\fIoptopt\fP\fB;\fP .fi .P .RS -4 Mit Glibc erforderliche Feature\-Test\-Makros (siehe \fBfeature_test_macros\fP(7)): .RE .P \fBgetopt\fP(): .nf _POSIX_C_SOURCE >= 2 || _XOPEN_SOURCE .fi .SH BESCHREIBUNG Die Funktion \fBgetopt\fP() wertet die Befehlszeilenoptionen aus. Ihre Argumente \fIargz\fP und \fIargv\fP sind die Argumentanzahl und das Argumentenfeld wie zur Funktion \fBmain\fP() bei Programmaufruf übergeben. Ein Element von \fIargv\fP, das mit »\-« beginnt (und nicht exakt »\-« oder »\-\-«) ist, ist ein Optionselement. Die Zeichen dieses Elementes (ohne das einleitende »\-«) sind Optionszeichen. Falls \fBgetopt\fP() wiederholt aufgerufen wird, gibt sie aufeinanderfolgend jedes der Optionszeichen von jedem Optionselement zurück. .P Die Variable \fIoptind\fP ist der Index des nächsten zu verarbeitenden Elements in \fIargv\fP. Das System initialisiert diesen Wert mit 1. Der Aufrufende kann ihn auf 1 zurücksetzen, um das Durchsuchen des gleichen \fIargv\fP erneut zu beginnen oder beim Durchsuchen eines neuen Argumentenfeldes. .P Falls \fBgetopt\fP() ein weiteres Optionszeichen findet, gibt sie dieses Zeichen zurück, wobei die externe Variable \fIoptind\fP und eine statische Variable \fInextchar\fP auf neuen Stand gesetzt werden, so dass der nächste Aufruf von \fBgetopt\fP() die Suche mit dem folgenden Optionszeichen oder \fIargv\fP\-Element fortsetzen kann. .P Falls es keine weiteren Optionszeichen gibt, gibt \fBgetopt\fP() \-1 zurück. Dann ist \fIoptind\fP der Index des ersten \fIargv\fP\-Elementes in \fIargv\fP, das keine Option ist. .P \fIoptzeichenk\fP ist eine Zeichenkette, die die gültigen Optionszeichen enthält. Ein berechtigtes Optionszeichen ist jedes sichtbar \fBascii\fP(7)\-Zeichen aus einem Byte (für das \fBisgraph\fP(3) einen von Null verschiedenen Wert liefern würde), das weder »\-«, »:« noch »;« ist. Falls solch ein Zeichen von einem Doppelpunkt gefolgt wird, benötigt diese Option ein Argument, weswegen \fBgetopt\fP() einen Zeiger auf den folgenden Text in dem selben \fIargv\fP\-Element oder den Text des folgenden \fIargv\fP\-Elementes in \fIoptarg\fP platziert. Zwei Doppelpunkte bedeuten, dass diese Option ein optionales Argument erwartet; falls es Text im aktuellen \fIargv\fP\-Element gibt, wird er in \fIoptarg\fP zurückgegeben, anderenfalls wird \fIoptarg\fP auf numerisch Null gesetzt. Dieses ist eine GNU\-Erweiterung. Falls \fIoptzeichenk\fP \fBW\fP gefolgt von einem Semikolon enthält, wird \fB\-W foo\fP als lange Option \fB\-\-foo\fP interpretiert. (Die Option \fB\-W\fP ist von POSIX.2 für die Implementierung von Erweiterungen reserviert.) Dieses Verhalten ist eine GNU\-Erweiterung, die nicht in Bibliotheken vor GNU Glibc 2 verfügbar war. .P Standardmäßig vertauscht \fBgetopt\fP() den Inhalt von \fIargv\fP beim Durchsuchen, so dass schließlich alle Nichtoptionen am Ende stehen. Zwei weitere Suchmodi sind ebenfalls implementiert. Falls das erste Zeichen von \fIoptzeichenk\fP ein »+« ist oder die Umgebungsvariable \fB\%POSIXLY_CORRECT\fP gesetzt ist, dann stoppt die Optionsbearbeitung sobald ein Argument auftritt, das keine Option ist. Falls »+« nicht das erste Zeichen von \fIoptzeichenk\fP ist, wird es als normale Option aufgefasst. Sollte in diesem Fall ein \fB\%POSIXLY_CORRECT\fP\-Verhalten erforderlich sein, dann wird \fIoptzeichenk\fP zwei »+«\-Symbole enthalten. Falls das erste Zeichen von \fIoptzeichenk\fP ein »\-« ist, dann wird jedes Argument von \fIargv\fP, das keine Option ist, so behandelt, als ob es Argument einer Option mit dem Zeichencode 1 wäre. (Dies wird von Programmen benutzt, die Optionen und andere \fIargv\fP\-Elemente in beliebiger Reihenfolge erwarten, und die Wert auf die Reihenfolge der beiden legen.) Das besondere Argument »\-\-« erzwingt die Beendigung der Suche nach Optionen unabhängig von der Suchmethode. .P Beim Verarbeiten der Optionsliste kann \fBgetopt\fP() zwei Arten von Fehler erkennen: (1) ein Optionszeichen, das nicht in \fIoptzeichenk\fP angegeben wurde und (2) ein fehlendes Optionsargument (d.h. eine Option am Ende der Befehlszeile ohne ein erwartetes Argument). Solche Fehler werden wie folgt verarbeitet und berichtet: .IP \[bu] 3 Standardmäßig gibt \fBgetopt\fP() eine Fehlermeldung auf der Standardfehlerausgabe aus, stellt das fehlerhafte Optionszeichen in \fIoptopt\fP und liefert »?« as Funktionsergebnis zurück. .IP \[bu] Falls der Aufrufende die globale Variable \fIoptfeh\fP auf Null gesetzt hat, dann gibt \fBgetopt\fP() keine Fehlermeldung aus. Der Aufrufende kann durch Testen, ob der Funktionsrückgabewert »?« ist, ermitteln, ob es einen Fehler gab. (Standardmäßig hat \fIoptfeh\fP einen von Null verschiedenen Wert). .IP \[bu] Falls das erste Zeichen im \fIoptzeichenk\fP (nach einem optionalen »+« oder »\-« wie oben beschrieben) ein Doppelpunkt (»:«) ist, dann gibt \fBgetopt\fP() analog auch keine Fehlermeldung aus. Zusätzlich wird es »:« statt »?« zurückliefern, um ein fehlendes Argument anzuzeigen. Dies ermöglicht es dem Aufrufenden, die zwei Arten von Fehlern zu unterscheiden. .SH RÜCKGABEWERT Falls eine Option erfolgreich gefunden wurde, gibt \fBgetopt\fP() das Optionszeichen zurück. Falls alle Befehlszeilenargumente erfolgreich ausgewertet wurden, gibt \fBgetopt\fP() \-1 zurück. Falls \fBgetopt\fP() ein Optionszeichen antrifft, das nicht in \fIoptzeichenk\fP enthalten war, wird »?« zurückgegeben. Falls \fBgetopt\fP() auf eine Option trifft, der ein Argument fehlt, hängt der Rückgabewert vom ersten Zeichen in \fIoptzeichenk\fP ab: Falls es ein »:« ist, wird »:« zurückgegeben; anderenfalls »?«. .SH UMGEBUNGSVARIABLEN .TP \fB\%POSIXLY_CORRECT\fP Falls sie gesetzt ist, dann stoppt die Optionsbearbeitung, sobald ein Argument auftritt, das keine Option ist. .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lb lb lbx l l l. Schnittstelle Attribut Wert T{ .na .nh \fBgetopt\fP() T} Multithread\-Fähigkeit T{ .na .nh MT\-Unsicher race:getopt env T} .TE .SH VERSIONEN POSIX spezifiziert, dass das Array\-Argument \fIargv\fP vom Typ \fIconst\fP sein soll, aber diese Funktionen permutieren ihre Elemente, außer die Umgebungsvariable \fB\%POSIXLY_CORRECT\fP ist gesetzt. \fIconst\fP wird im eigentlichen Prototyp zur Kompatibilität mit anderen Systemen gesetzt, allerdings zeigt diese Seite den Kennzeichner nicht, um den Leser nicht durcheinanderzubringen. .SH STANDARDS .TP \fBgetopt\fP() POSIX.1\-2008. .IP Die Verwendung von »+« und »\-« in \fIoptzeichenk\fP ist eine GNU\-Erweiterung. .SH GESCHICHTE .TP \fBgetopt\fP() POSIX.1\-2001 und POSIX.2. .P In einigen älteren Implementierungen wurde \fBgetopt\fP() in \fI\fP deklariert. SUSv1 gestattete die Deklaration entweder in \fI\fP oder \fI\fP. POSIX.1\-1995 kennzeichnete die Verwendung von \fI\fP zu diesem Zweck als LEGACY. POSIX.1\-2001 verlangt nicht, dass diese Deklaration in \fI\fP enthalten ist. .P Sehr alte Versionen von Glibc wurden von der .UR https:\://\:sourceware.org/\:git/\:?p=glibc.git;a=commitdiff;h=bf079e19f50d64aa5e05 Umgebungsvariablen \fB\%_\fP\fIPID\fP\fB_GNU_nonoption_argv_flags_\fP .UE beeinflusst. .SH ANMERKUNGEN Ein Programm, das mehrere Argumentvektoren oder denselben Argumentvektor mehrfach auswertet und GNU\-Erweiterungen wie beispielsweise »+« und »\-« am Anfang von \fIoptzeichenk\fP nutzen möchte oder zwischen den Auswertungen den Wert von \fB\%POSIXLY_CORRECT\fP ändert, muss \fBgetopt\fP() neu initialisieren, indem es \fIoptind\fP auf 0 statt des traditionellen Wertes 1 setzt. (Das Rücksetzen auf 0 erzwingt den Aufruf einer internen Initialisierungsroutine, die erneut \fB\%POSIXLY_CORRECT\fP prüft und in \fIoptzeichenk\fP nach GNU\-Erweiterungen sucht.) .P Befehlszeilenargumente werden streng in der Reihenfolge ausgewertet. Das bedeutet, dass eine Option, die ein Argument erwartet, das nächste Argument verwenden wird, unabhängig davon, ob das Argument ein korrekt angegebenes Optionsargument ist oder einfach nur die nächste Option (falls der Benutzer die Befehlszeile falsch angegeben hat). Falls beispielsweise \fIoptzeichenk\fP als »1n:« festgelegt ist und der Benutzer die Befehlszeile inkorrekt als \fIprog\ \-n\ \-1\fP angibt, dann wird der Option \fI\-n\fP der \fBoptarg\fP\-Wert »\-1« gegeben und die Option \fI\-1\fP wird als nicht angegeben betrachtet. .SH BEISPIELE .SS getopt() Das folgende triviale Beispielprogramm verwendet \fBgetopt\fP(), um zwei Programmoptionen zu verarbeiten: \fI\-n\fP ohne zugehörigen Wert und \fI\-t Wert\fP, die einen zugehörigen Wert erwartet. .P .\" SRC BEGIN (getopt.c) .EX #include #include #include \& int main(int argc, char *argv[]) { int flags, opt; int nsecs, tfnd; \& nsecs = 0; tfnd = 0; flags = 0; while ((opt = getopt(argc, argv, "nt:")) != \-1) { switch (opt) { case \[aq]n\[aq]: flags = 1; break; case \[aq]t\[aq]: nsecs = atoi(optarg); tfnd = 1; break; default: /* \[aq]?\[aq] */ fprintf(stderr, "Verwendung: %s [\-t nsecs] [\-n] name\[rs]n", argv[0]); exit(EXIT_FAILURE); } } \& printf("flags=%d; tfnd=%d; nsecs=%d; optind=%d\[rs]n", flags, tfnd, nsecs, optind); \& if (optind >= argc) { fprintf(stderr, "Erwartete Argumente nach den Optionen\[rs]n"); exit(EXIT_FAILURE); } \& printf("name argument = %s\[rs]n", argv[optind]); \& /* Weiterer Code weggelassen */ \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "SIEHE AUCH" \fBgetopt\fP(1), \fBgetopt_long\fP(3), \fBgetopt_long_only\fP(3), \fBgetsubopt\fP(3) .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother , Martin Eberhard Schauer , Mario Blättermann und Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .