表示选项参数结束:双破折号“--”与单破折号“-”?

表示选项参数结束:双破折号“--”与单破折号“-”?

我注意到在https://unix.stackexchange.com/a/459007/674,该单破折号-用于表示选项参数的结束。

--双破折号也可以表示选项参数的结束,这是否正确?

那他们有什么区别呢?什么时候用哪个?它们都是 GNU 约定吗?谢谢。

答案1

单破折号根据定义是一个文件类型参数,在文件类型参数之后,不允许符合 POSIX 的应用程序检查选项。

双破折号是选项结尾的 POSIX 定义。之后,仅允许文件类型参数。

因此,尽管最终可能会产生相似的结果,但两者的约定是不同的。

这不是 GNU 约定,而是 POSIX。

另请注意,约定编写:

#!/bin/sh -

或者

#!/bin/sh -p

getopt(3)是从 -- 特殊参数和函数都不知道的时代开始的。

答案2

具体来说,Bash 接受-作为 的同义词--。在问题引用的答案中给出的示例中,

#! /bin/bash -

这用于告诉 Bash 后面不再有任何选项,以便无论脚本的名称如何,shebang 都可以工作 - 例如,考虑如果脚本被命名为 会发生什么-l

相关内容