Viděl jsem --
použito v příkazu compgen
.
Například:
compgen -W "foo bar baz" -- b
Jaký je význam --
tam?
Přesněji řečeno, dvojitá pomlčka (--
) se používá ve většině vestavěných příkazů bash a mnoha dalších příkazech k označení voleb voleb na konci, po nichž jsou akceptovány pouze poziční parametry.
Příklad použití: řekněme, že chcete prohodit soubor pro řetězec -v
- obvykle -v
bude považováno za možnost obrátit význam shody (zobrazí pouze řádky, které se neshodují), ale s --
můžete táhnout za řetězec -v
takhle:
grep -- -v file
V man bash
Můžeme číst Shell Builtin Commands sekce:
Není-li uvedeno jinak, každý vestavěný příkaz zdokumentovaný v této části jako přijímající možnosti, kterým předchází
-
Přijímá--
pro označení konce možností.Vestavěné
:
,true
,false
atest
nepřijímají možnosti a nezabývají se--
Speciálně.exit
,logout
,break
,continue
,let
ashift
vestavby přijímají a zpracovávají argumenty začínající na-
Bez nutnosti--
. Ostatní vestavby, které přijímají argumenty, ale nejsou specifikovány jako akceptující volby, interpretují argumenty začínající-
Jako neplatné možnosti a vyžadují--
, Aby této interpretaci zabránily.Všimněte si, že
echo
neinterpretuje--
, Což znamená konec možností.
Označuje konec seznamu parametrů (opcí).
POSIX.1-2017
12.2 Pokyny pro syntaxe nástroje
Pravidlo 10:
První
--
argument, který není argumentem option-argument, by měl být přijat jako oddělovač označující konec možností. Všechny následující argumenty by měly být považovány za operandy, i když začínají znakem '-
'znak.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02