是$!在shell脚本中有意思

pRA*_*ANT 7 linux bash shell scripting

$!存在于bash/shell脚本中,如果是,请告知它的用途.为什么echo $!在命令行上运行时它会给出空白?

anu*_*ava 8

除了其他答案,这个回音

echo $!
Run Code Online (Sandbox Code Playgroud)

如果您尚未在当前shell 中的后台运行任何进程,则将打印为空白.如果您现在运行:

date &
echo $!
Run Code Online (Sandbox Code Playgroud)

然后它将打印出类似的内容(即上次执行的后台进程的进程ID):

47833
Run Code Online (Sandbox Code Playgroud)


use*_*001 6

$! 是shell在后台运行的最后一个程序的PID

  • @pRAShANT没有简单的方法.您可以使用您选择的数组类型记录您运行的所有进程,然后使用SIGCHLD陷阱处理程序在每次进程终止/终止时触发,然后检查哪个进程不再存在.该方法不准确,特别是如果两个进程同时终止.检查`/ proc`,`kill -s 0`等是否仍然存在进程也很慢.而且我不确定通过工作控制进行的流程管理是否总是可行或有效,以至于它不会遗漏任何内容. (2认同)