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 中。