我目前从我们的configure.ac构建脚本中阅读到这一行。我在谷歌上搜索了答案,但没有找到。我认为这是一个shell脚本,但是特别是对于
--
这是什么意思呢?set -- "$progname" "$@"
来自 help set
:
-- Assign any remaining arguments to the positional parameters.
If there are no remaining arguments, the positional parameters
are unset.
--
的原因是确保即使"$progname"
或"$@"
包含破折号,它们也不会被解释为命令行选项。
set
更改位置参数,存储在$@
中。因此,在这种情况下,它将"$progname"
附加到脚本接收到的位置参数开头。
--
是bash内置命令,也是很多Unix命令用来表示命令选项结束的符号。因此,如果你有像下面这样的内容:
grep -- -v file
-v
不会被解释为grep选项,而是作为参数传入(因此你可以用grep查找-v
)。
$@
是传递到脚本中的所有参数列表(我假设set
命令是其中一部分)。
--
确保脚本中传入的任何选项都不会被解释为set
的选项,而是作为$progname
变量所表示命令的选项。