为啥 echo $$ 返回一个数字? [复制]

Posted

技术标签:

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

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

echo $$

返回

489

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

【问题讨论】:

另见:***.com/questions/2493642/… 和bash特殊参数:gnu.org/software/bash/manual/bashref.html#Special-Parameters 【参考方案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

【讨论】:

以上是关于为啥 echo $$ 返回一个数字? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥排序列表返回无? [复制]

PHP为啥echo 'happy'.1+2.'345'会输出2345

为啥 NaN 大于 JavaScript 中的任何数字? [复制]

php设计api,只能以echo的形式返回给调用者吗?为啥用return就不能返回数据呢?

为啥 alloca 两次返回相同的地址?

为啥需要布尔返回类型? [复制]