Antworten:
Genauer gesagt wird ein doppelter Bindestrich ( --) in integrierten Bash-Befehlen und vielen anderen Befehlen verwendet, um das Ende der Befehlsoptionen zu kennzeichnen. Danach werden nur Positionsparameter akzeptiert.
Beispielanwendung: Nehmen wir an, Sie möchten eine Datei für die Zeichenfolge abrufen -v- normalerweise -vwird die Option in Betracht gezogen, die übereinstimmende Bedeutung umzukehren (nur nicht übereinstimmende Zeilen anzeigen). Mit dieser Option --können Sie jedoch eine Zeichenfolge abrufen -v:
grep -- -v file
--funktioniert, um Optionen von regulären Ausdrücken in zu trennen grep, aber die kanonische Art ist, -e/ zu verwenden --regexp.
--, obwohl Sie richtig bemerken, dass mein Beispiel oben auch als geschrieben werden könnte grep -e -v file(obwohl das sehr verwirrend ist).
basheingebauten Befehle akzeptieren --das Ende der Optionsmarkierung. [und echonicht zum Beispiel ( einer der Gründe echokann nicht zuverlässig verwendet werden ).
In können man bashwir in Shell Builtin Commands Abschnitt lesen :
Wenn nicht anders angegeben, die jeweils eingebauter Befehl in diesem Abschnitt dokumentierte Optionen wie die Annahme vorangestellte
-akzeptiert--das Ende der Optionen zu bedeuten .Die
:,true,falseundtestbuiltins akzeptieren keine Optionen und behandeln nicht--speziell. Dieexit,logout,break,continue,let, undshiftbuiltins annehmen und verarbeiten Argumente beginnend mit ,-ohne--. Andere integrierte Funktionen, die Argumente akzeptieren, aber nicht als akzeptierende Optionen angegeben sind, interpretieren Argumente, die mit-ungültigen Optionen beginnen, und müssen--diese Interpretation verhindern.Beachten Sie, dass
echodies nicht--das Ende von Optionen bedeutet.
man bash(Notiz für das nächste Mal:).
POSIX.1-2017
12.2 Richtlinien für die Utility-Syntax
Leitlinie 10:
Das erste
--Argument, das kein Optionsargument ist, sollte als Begrenzer für das Ende der Optionen akzeptiert werden. Alle folgenden Argumente sollten als Operanden behandelt werden, auch wenn sie mit dem-Zeichen ' ' beginnen .
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
seteingebauten Bash , wo es unbedingt nötig ist.