bash 中的 $$ 是什么?

ami*_* jj 36 shell bash shell-script

有一个我用它进化的脚本,它有如下命令行:

mytemp=`echo ${sourcedir}|awk -F/ '{printf "/%s/tmp",$2}'`/`basename $0`-$1.$$
Run Code Online (Sandbox Code Playgroud)

在命令的最后我们看到$$产生一个数字。当我echo $$在 bash 中使用时,我还会看到如下所示的数字:

 #echo $$
 23019
Run Code Online (Sandbox Code Playgroud)

这个数字到底是$$什么,又是什么?

cof*_*Mug 43

来自高级 Bash 脚本指南:

$$ 是脚本本身的进程 ID (PID)。

$BASHPID 是当前 Bash 实例的进程 ID。这与 $$ 变量不同,但它通常给出相同的结果。


hee*_*ayl 12

$$是当前 shell 实例的进程 ID。因此,在您的情况下,数字 23019 是bash.

以下应该给你一个更好的主意:

ps -p $$
Run Code Online (Sandbox Code Playgroud)

  • @chaos 这些脚本应该使用`mktemp`。 (10认同)