我目前从configure.ac构建脚本中读取此行。我在Google上搜索了答案,但没有找到答案。
我认为它是shell脚本,但这意味着什么,尤其是--
?
set -- "$progname" "$@"
答案 0 :(得分:2)
--
是一个内置的bash,以及许多unix命令用来表示命令选项结束的东西。所以如果你有类似的东西:
grep -- -v file
-v
不会被解释为grep选项,而是一个参数(因此你可以grep for -v
)。
$@
是传递给脚本的所有参数的列表(我假设set
命令是其中的一部分)。
--
确保作为脚本一部分传入的任何选项不会被解释为set
的选项,而是作为$progname
变量表示的命令的选项。
答案 1 :(得分:2)
来自help set
:
-- Assign any remaining arguments to the positional parameters. If there are no remaining arguments, the positional parameters are unset.
--
的原因是确保即使"$progname"
或"$@"
包含破折号,也不会将它们解释为命令行选项。
set
更改位置参数,该参数存储在$@
中。因此,在这种情况下,它会将"$progname"
附加到脚本接收的位置参数的开头。