我是bash shell编程的初学者。你能告诉我关于bash shell中的'$$'符号吗?
如果我尝试以下
#> echo $$
它打印
#>18756
你能告诉我这是什么符号是用于什么时候?
我是bash shell编程的初学者。你能告诉我关于bash shell中的'$$'符号吗?
如果我尝试以下
#> echo $$
它打印
#>18756
你能告诉我这是什么符号是用于什么时候?
这是bash进程本身的进程ID。
您可以使用它在它的生命来跟踪你的进程 - 使用ps -p
,看它是否仍在运行,发送使用kill
(暂停。例如,进程)的信号,与renice
改变它的优先级,依此类推。
进程标识通常写入日志文件,特别是一次运行多个脚本实例时,以帮助跟踪性能或诊断问题。
这里的the bash documentation概述了特殊参数。
BASHPID
,由ghostdog74提到,在版本4.0中添加。下面是孟德尔库珀的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.
或者您可以直接链接到官方Bash文档:http://www.gnu.org/software/bash/manual/bashref.html#Special-Parameters http://www.gnu.org/software/bash/manual /bashref.html#Shell-Variables – ephemient 2010-01-10 22:16:09
好主意 - 完成,谢谢。 – 2010-01-10 23:08:43
如果你有bash中,一个比较接近相当于是BASHPID变量。看到男人猛击
BASHPID
Expands to the process id of the current bash process. This differs from $$ under certain circumstances, such as subshells
that do not require bash to be re-initialized.
什么已经成为你的shell阅读精美手册的良好传统? – Jens 2012-05-12 17:02:57