0

可能重复:
$$ 在 shell 中是什么意思?

我正在阅读 Linux 的 shell 脚本并遇到变量$$:两个美元符号。基本上整行是

  work_dirname=/tmp/my-work-$$

是什么$$意思?

4

4 回答 4

5

$$给出 shell 的进程 ID。

于 2012-09-04T17:42:00.687 回答
4

它是脚本本身的进程 ID (PID)。该$$变量经常在脚本中用于构造“唯一”临时文件名(参见示例 32-6、示例 16-31 和示例 15-27)。这通常比调用 mktemp 更简单。

(来源:http ://tldp.org/LDP/abs/html/internalvariables.html#PROCCID )

于 2012-09-04T17:43:05.417 回答
3

它是正在执行的脚本的进程 ID。这可用于为临时文件创建一个唯一的文件名,这就是您正在查找的脚本可能正在执行的操作。

参见:http ://tldp.org/LDP/abs/html/internalvariables.html#PROCCID

于 2012-09-04T17:43:10.443 回答
1

@KingsIndian 是对的: $$给出 shell 的进程 ID。

但是什么是进程 ID?

要理解这一点,试试这个:

$ echo $$
$ sh
$ echo $$
$ exit
$ echo $$

第一个和第三个回显打印相同的进程 ID,但中间一个打印不同的。不同之处在于该sh命令会挂起您现有的 shell 并打开一个新的 shell,这是一个新进程并且有自己的 ID。

当您希望每个 shell 拥有自己的文件时使用示例中的语法,该文件不会与其他 shell 打开的文件冲突。这是否健壮取决于将对该文件执行的操作,但这是一种有时会被使用的策略。

另请参阅mktemp命令。

于 2012-09-04T17:49:43.650 回答