shell 脚本 $$ 值

shell 脚本 $$ 值

当我使用这些 shell 命令时:

[root@linux /tmp]# a=$$
[root@linux /tmp]# echo $a
3985

3985 这个值从何而来?为什么?

答案1

man bash

解释它。

Expands to the process ID of the shell.  In a () subshell, 
it expands to the  process ID of the current shell, not the subshell.

答案2

$$ 是当前进程的 pid

尝试

主机@控制器:~$ echo $$
12481
主机@控制器:~$ ps -p 12481
  PID TTY 时间命令
12481 分/2 00:00:01 猛击
主机@控制器:~$

由于我们echo $$在 bash 中执行,因此我们获取其当前的 pid

也知道

echo $? 是最后执行的命令的返回码。

$# 是参数的数量

$* 是传递给当前进程的参数列表

$[1 或 2 或 ... n] 每个对应参数的值

答案3

这就是为什么有些人用它来构造一个只临时使用然后被销毁的文件名,就像这个脚本片段一样。

SCRATCHFILE=/tmp/emphemeral.$$ ;
# Now have the script write to and read from the temp file
rm $SCRATCHFILE ;

如上所述,文件名中的 $$ 将是主脚本的 PID。

答案4

尝试“echo $$”你会得到答案。

相关内容