这个 shell 命令中的“--”(双破折号)是什么意思?

这个 shell 命令中的“--”(双破折号)是什么意思?

我有这个 shell 命令:

kill `cat -- $PIDFILE`

这里的 double -- 起什么作用?为什么不直接使用

kill `cat $PIDFILE`

答案1

告诉--不要cat尝试将其后面的内容解析为命令行选项。

举个例子,想想如果变量$PIDFILE定义为,在两种情况下会发生什么PIDFILE="--version"。在我的计算机上,它们给出以下结果:

$ cat $PIDFILE
cat (GNU coreutils) 6.10
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Torbjorn Granlund and Richard M. Stallman.

$ cat -- $PIDFILE
cat: --version: No such file or directory

答案2

POSIX.1-2017

POSIX还指定它:http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02

12.2 实用程序语法指南

准则 10:

首先--非选项参数的参数应被接受为表示选项结束的分隔符。任何后续参数都应被视为操作数,即使它们以“-”字符开头。

也可以看看:https://unix.stackexchange.com/questions/11376/what-does-double-dash-mean-also-known-as-bare-double-dash

相关内容