Odpowiedzi:
Dokładniej, podwójna kreska ( --) jest używana we wbudowanych komendach bash i wielu innych komendach, oznaczających koniec opcji komend, po których akceptowane są tylko parametry pozycyjne.
Przykład użycia: powiedzmy, że chcesz grepować plik dla łańcucha -v- zwykle -vbędzie brana pod uwagę opcja odwrócenia pasującego znaczenia (pokazuj tylko linie, które nie pasują), ale przy pomocy --grep dla łańcucha -vtakiego:
grep -- -v file
--Działa w celu oddzielenia opcji od wyrażeń regularnych grep, ale kanonicznym sposobem jest użycie -e/ --regexp.
--, chociaż masz rację zauważając, że mój powyższy przykład można również zapisać jako grep -e -v file(chociaż jest to bardzo mylące).
bashwbudowane polecenia akceptują --jako znacznik końca opcji. [i echonie na przykład ( jeden z powodów echonie może być wykorzystany niezawodnie ).
W man bashmożemy przeczytać w sekcji poleceń poleceń wbudowanych powłoki :
O ile nie zaznaczono inaczej, każde wbudowane polecenie udokumentowane w tej sekcji jako akceptowanie opcji poprzedzone przez
-akceptuje--oznaczanie końca opcji .Te
:,true,falseitestbuiltins nie akceptują opcje i nie traktuje--specjalnie.exit,logout,break,continue,let, Ishiftbuiltins zaakceptować i argumenty proces rozpoczynający się-bez potrzeby--. Inne wbudowane akceptujące argumenty, ale nieokreślone jako opcje akceptują, interpretują argumenty zaczynające się-od niepoprawnych opcji i wymagają--zapobiegania takiej interpretacji.Zauważ, że
echonie--oznacza to końca opcji.
man bash(notatka do siebie następnym razem:).
POSIX.1-2017
12.2 Wytyczne dotyczące składni narzędzi
Wytyczna 10:
Pierwszy
--argument, który nie jest argumentem opcji, powinien zostać zaakceptowany jako separator wskazujący koniec opcji. Wszelkie poniższe argumenty należy traktować jak operandy, nawet jeśli zaczynają się od-znaku „ ”.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
setwbudowanym Bash , gdzie jest to absolutnie konieczne.