【问题标题】:Why does echo $$ return a number? [duplicate]为什么 echo $$ 返回一个数字? [复制]
【发布时间】:2014-04-22 19:45:54
【问题描述】:

为什么我这样做时会得到一个数字:

echo $$

返回

489

如果我打开一个新终端,它会返回另一个数字。它似乎与终端会话的pid有关,但为什么呢?

【问题讨论】:

标签: bash echo


【解决方案1】:

$$ 表示您当前的 PID。

Bash Reference Manual - 3.4.2 Special Parameters中所见:

$

扩展为 shell 的进程 ID。在 () 子shell中,它展开 调用 shell 的进程 ID,而不是子 shell。

你可以通过ps -ef | grep 489进行测试,它会显示你登录的过程。

以我为例:

$ echo $$
3470

$ ps -ef | grep 3470
1000      3470  3469  0 10:59 pts/3    00:00:00 -bash    <---- this process
1000      8151  3470  0 15:37 pts/3    00:00:00 ps -ef
1000      8152  3470  0 15:37 pts/3    00:00:00 grep --color=auto 3470

【讨论】:

    【解决方案2】:

    因为它是这样定义的。 $$ 是一个特殊的 shell 变量(例如 $!$_$@$1,...),指的是调用的 shell 的 PID。

    【讨论】:

      【解决方案3】:

      你会在这个post找到一个很好的解释。

      $$ 当前shell(不是子shell)的pid

      【讨论】:

        猜你喜欢
        • 2013-04-09
        • 1970-01-01
        • 2018-06-01
        • 1970-01-01
        • 2019-03-08
        • 1970-01-01
        • 2012-03-15
        • 2016-10-16
        相关资源
        最近更新 更多