Was bedeutet --) in der Case-Struktur von Bash?

Was bedeutet --) in der Case-Struktur von Bash?

Ich habe einen Codeausschnitt gesehen, der eine Case-Struktur enthält.

while true;
do
    case "$1" in
        --prepare)
            echo "prepare"
            ENV_PREPARE
            exit 0
            ;;
        --sleep)
            SLEEP_TIME=$2
            shift 2
            ;;
        --)
            shift
            break
            ;;
        *)
            echo "Internal error!"
            exit 1
            ;;
    esac
done

Was bedeutet --) hier in der Case-Struktur von Bash?

        --)
            shift
            break
            ;;

Antwort1

Es bedeutet nichts Besonderes, darauf herumzuhacken.

Der Autor dieses Snippets wollte zwei Bindestriche allein ohne andere Zeichen abgleichen. Wörtlich "--".

Viele Unix-Befehlszeilentools, insbesondere aus der GNU-Ära, ermöglichen die Verwendung von „--“ als Trennzeichen, um auszudrücken: „Nichts ab diesem Punkt soll als Option behandelt werden; der Rest der Befehlszeile besteht aus Argumenten (wie etwa einer Liste von Dateinamen für einen Befehl, der auf Dateien einwirkt)“. Auf diese Weise können Sie beispielsweise eine Datei mit dem Namen „--help“ löschen, indem Sie Folgendes eingeben:

 rm -- --help

Es rmverhindert, dass man denkt, „--help“ sei eine lange Option, um die Hilfe-Anweisung anzuzeigen. (Das ist ein schlechtes Beispiel, aber ich denke, Sie verstehen, was ich meine.)

Ich denke, der Autor des Skripts wollte, dass „--“ in seinem Skript auf diese Weise funktioniert.

verwandte Informationen