it-swarm.cn

“-”(双破折号)是什么意思?

我已经看到compgen命令中使用了--

例如:

compgen -W "foo bar baz" -- b

其中的--是什么意思?

518
dogbane

更准确地说,大多数bash内置命令和许多其他命令中都使用双破折号(--)表示命令选项的结尾,此后仅接受位置参数。

用法示例:假设您要为字符串-v复制文件-通常-v被认为是反转匹配含义的选项(仅显示不匹配的行),但使用--您可以grep表示字符串-v,如下所示:

grep -- -v file
631
Guss

man bash中,我们可以阅读Shell内置命令部分:

除非另有说明,否则本节中记录为接受选项的每个内置命令(以-开头)都接受--表示选项的结尾

内置的:truefalsetest内置选项不接受选项,也不对--进行特殊处理。内建的exitlogoutbreakcontinueletshift内建函数接受并处理以-,而无需--。其他接受参数但未指定为接受选项的内建函数将以-开头的参数解释为无效选项,并要求--来防止这种解释。

请注意,echo不会将--解释为选项的结尾。

48
kenorb

这标志着参数(选项)列表的结尾。

47
polemon

POSIX.1-2017

12.2实用程序语法准则

准则10:

不是选项参数的第一个--参数应作为表示选项结束的定界符被接受。以下所有自变量都应视为操作数,即使它们以'-'字符开头。

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02

18
John Doe