我是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)