【问题标题】:Linux script variable "$$" [duplicate]Linux脚本变量“$$” [重复]
【发布时间】:2012-08-29 10:02:59
【问题描述】:

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

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

  work_dirname=/tmp/my-work-$$

$$ 是什么意思?

【问题讨论】:

    标签: linux shell


    【解决方案1】:

    $$ 给出 shell 的进程 ID。

    【讨论】:

    • 所以如果shell的进程ID是4321那么变量$work_dirname现在持有/tmp/my-work-4321?感谢您的帮助!
    • my-work-4321是目录还是文件?
    • 只是一个名字。您可以使用 to 创建一个目录/文件,例如 mkdir $work_dirname 将创建一个目录 /tmp/my-work-4321
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        但什么是进程 ID?

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

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

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

        当你希望每个 shell 都有自己的文件时使用你的示例中的语法,这不会与其他 shell 打开的文件发生冲突。这是否可靠取决于将要对文件执行什么操作,但这是一种有时会被使用的策略。

        另见mktemp 命令。

        【讨论】:

          猜你喜欢
          • 2015-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-24
          • 2020-04-02
          • 1970-01-01
          • 2014-08-06
          • 2014-02-14
          相关资源
          最近更新 更多