什么是bash shell中的'$$'?

Nya*_*baa 9 linux bash shell

我是bash shell编程的初学者.你能告诉我bash shell中的'$$'符号吗?

如果我尝试以下

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

它打印

#>18756
Run Code Online (Sandbox Code Playgroud)

你能告诉我这个符号的用途和时间吗?

mar*_*ton 16

它是bash进程本身的进程ID.

您可以使用它来跟踪您的生命过程 - 使用ps -p它来查看它是否仍在运行,使用它发送信号kill(例如暂停进程),更改其优先级renice等等.

进程ID通常写入日志文件,尤其是在一次运行多个脚本实例时,以帮助跟踪性能或诊断问题.

这是概述特殊参数的bash文档.

BASHPID由ghostdog74提到,在4.0版本中添加.以下是Mendel Cooper的Advanced Bash-Scripting Guide中的一个示例,它显示了$$和之间的区别$BASHPID:

#!/bin/bash4

echo "\$\$ outside of subshell = $$" # 9602
echo "\$BASH_SUBSHELL outside of subshell = $BASH_SUBSHELL" # 0
echo "\$BASHPID outside of subshell = $BASHPID" # 9602
echo

( echo "\$\$ inside of subshell = $$" # 9602
echo "\$BASH_SUBSHELL inside of subshell = $BASH_SUBSHELL" # 1
echo "\$BASHPID inside of subshell = $BASHPID" ) # 9603
# Note that $$ returns PID of parent process.
Run Code Online (Sandbox Code Playgroud)