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 rm
verhindert, 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.