Linux脚本变量“$$”

时间:2012-09-04 17:39:02

标签: linux shell

  

可能重复:
  What does $$ mean in the shell?

我正在为Linux阅读一个shell脚本并且遇到变量$$:两个美元符号。基本上全线是

  work_dirname=/tmp/my-work-$$

$$是什么意思?

4 个答案:

答案 0 :(得分:5)

$$给出shell的进程ID。

答案 1 :(得分:4)

  

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

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

答案 2 :(得分:3)

这是正在执行的脚本的进程ID。这可以用来为临时文件创建一个唯一的文件名,这就是你正在寻找的脚本可能正在做的事情。

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

答案 3 :(得分:1)

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

但什么是进程ID?

要明白这一点,试试这个:

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

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

当您希望每个shell拥有自己的文件时,使用您的示例中的语法,这不会与其他shell打开的文件冲突。这是否强大取决于文件将采取什么措施,但这是一种有时会使用的策略。

另请参阅mktemp命令。