Startseite > Umgebung & Hilfsprogramme > getopt

getopt: Kommandozeilenoptionen parsen

getopt ist ein Dienstprogramm, das in Shell-Skripten verwendet wird, um Kommandozeilenargumente auf standardisierte Weise zu parsen. Es hilft Skripten, sowohl kurze Optionen (-a) als auch lange Optionen (--long-option) zu verarbeiten und Argumente für Optionen korrekt zu trennen. Dies ist unerlässlich, um die Benutzeroberfläche von Skripten zu verbessern und ihre Robustheit zu erhöhen.

Übersicht

getopt ist ein leistungsstarkes Werkzeug zur Verarbeitung komplexer Kommandozeilenoptionen in Shell-Skripten. Es parst Optionen auf standardisierte Weise, was die Robustheit des Skripts erhöht und eine benutzerfreundliche Oberfläche bietet. Es ist besonders nützlich, wenn sowohl kurze als auch lange Optionen verarbeitet werden müssen.

Hauptmerkmale

  • Unterstützung für kurze Optionen (-a) und lange Optionen (--long-option)
  • Automatische Trennung und Neuanordnung von Optionsargumenten
  • Fehlerbehandlung und Identifizierung nicht standardmäßiger Optionen
  • Verbesserung der Flexibilität und Benutzerfreundlichkeit von Skripten

Wichtige Optionen

getopt bietet verschiedene Optionen, die zum Definieren und Parsen von Optionen in Skripten verwendet werden. Mit diesen Optionen können Sie angeben, wie Kommandozeilenargumente interpretiert werden sollen.

Optionsdefinition

Verhaltenskontrolle

Erzeugter Befehl:

Kombinieren Sie die Befehle.

Beschreibung:

`getopt` Führen Sie den Befehl aus.

Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.

Anwendungsbeispiele

Betrachten Sie verschiedene Szenarien zum Parsen von Kommandozeilenoptionen mit getopt. Die folgenden Beispiele zeigen, wie getopt in Skripten verwendet werden kann.

Grundlegendes Parsen von Kurzoptionen

getopt -o a:b -- "$@"

Parst Optionen, bei denen `-a` ein Argument benötigt und `-b` keines benötigt. `--` trennt Optionen von Nicht-Options-Argumenten.

Parsen von Kurz- und Langoptionen zusammen

getopt -o a:b -l alpha:,beta -- "$@"

Definiert Kurzoptionen mit `-o` und Langoptionen mit `-l`. `--alpha` benötigt ein Argument, `--beta` benötigt keines.

Verwendung von getopt in einem Shell-Skript

#!/bin/bash

# Optionen definieren: -a (benötigt Argument), -b (benötigt kein Argument)
#           --alpha (benötigt Argument), --beta (benötigt kein Argument)
TEMP=$(getopt -o a:b --long alpha:,beta -- "$@")

# Skript beenden, wenn getopt einen Fehler zurückgibt
if [ $? -ne 0 ]; then
    echo "Fehler beim Parsen der Optionen."
    exit 1
fi

# Die Ausgabe von getopt auf die aktuellen Shell-Positionsargumente setzen
# eval löst Probleme mit der Anführungszeichenbehandlung, und set -- ersetzt die vorhandenen Argumente
eval set -- "$TEMP"

# Schleife zur Verarbeitung der Optionen
while true; do
    case "$1" in
        -a|--alpha)
            echo "Option A/alpha erkannt. Wert: $2"
            shift 2 # Option und Argument überspringen
            ;;
        -b|--beta)
            echo "Option B/beta erkannt."
            shift # Nur die Option überspringen
            ;;
        --)
            shift # Trennzeichen zwischen Optionen und Nicht-Options-Argumenten überspringen
            break
            ;;
        *)
            echo "Interner Fehler!"
            exit 1
            ;;
    esac
done

echo "\nVerbleibende Nicht-Options-Argumente: $@"

Eine typische Skriptstruktur, bei der die Ausgabe von getopt mit `eval set --` auf die aktuellen Shell-Positionsargumente gesetzt und die Optionen mit `while` und `case` verarbeitet werden.

Tipps & Hinweise

Tipps und Hinweise zur effektiven Verwendung von getopt. Achten Sie besonders auf die `eval set --`-Syntax und die Fehlerbehandlung.

Wichtige Tipps

  • Verwenden Sie `eval set -- "$(getopt ...)"`: Dies ist die Standardmethode, um die Ausgabe von `getopt` sicher auf die Positionsargumente der aktuellen Shell zu setzen. `eval` löst Probleme mit der Anführungszeichenbehandlung, und `set --` löscht die vorhandenen Positionsargumente und ersetzt sie durch das Ergebnis von `getopt`.
  • Achten Sie auf Doppelpunkte bei der Optionsdefinition: Ein Doppelpunkt nach einer Option bedeutet, dass diese Option ein Argument benötigt. Zwei Doppelpunkte (::) bedeuten ein optionales Argument, aber dies kann je nach Version oder Implementierung von `getopt` unterschiedlich funktionieren, seien Sie also vorsichtig.
  • Die Bedeutung von `--`: Es ist wichtig, Optionen und Nicht-Options-Argumente bei einem `getopt`-Aufruf mit `--` klar zu trennen. Dies stellt sicher, dass `getopt` alle Optionen verarbeitet und die restlichen Argumente unverändert weitergibt.
  • Fehlerbehandlung: `getopt` gibt einen Exit-Code ungleich Null zurück, wenn ein Parsing-Fehler auftritt. Es ist ratsam, dies in Ihrem Skript zu überprüfen, eine entsprechende Fehlermeldung auszugeben und das Skript zu beenden.


Gleiche Kategorie Befehle