Answers:
更准确地说,--
bash内置命令和许多其他命令中使用双破折号()表示命令选项的结尾,此后仅接受位置参数。
用法示例:假设您要为该字符串grep文件-v
-通常-v
将被认为是反转匹配含义的选项(仅显示不匹配的行),但是--
您可以grep这样的字符串-v
:
grep -- -v file
--
可以将选项与正则表达式分开grep
,但是规范的方法是使用-e
/ --regexp
。
--
,尽管您正确地指出我上面的示例也可以写成grep -e -v file
(尽管很混乱),但它是正确的。
在man bash
我们可以阅读的Shell Builtin Commands部分中:
除非另有说明,否则本节中记录为接受选项的每个内置命令均以“
-
accepts”--
开头,以表示这些选项的结尾。在
:
,true
,false
,和test
建宏不接受选项,并没有把--
特别。的exit
,logout
,break
,continue
,let
,和shift
内建接受并处理论点开始-
,而不需要--
。其他接受自变量但未指定为接受选项的内建函数-
将以无效选项开头的自变量解释为无效选项,并要求--
阻止这种解释。注意,这
echo
并不--
意味着选项的结束。
man bash
(下次自己注意:)。
POSIX.1-2017
12.2实用程序语法准则
准则10:
--
不是选项参数的第一个参数应作为表示选项结束的定界符被接受。以下所有参数都应视为操作数,即使它们以'-
'字符开头。
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
set
绝对必要的内置Bash 中。