在 Shell 编程中,`$!` 是一个特殊变量,代表 最近一个后台命令的进程ID(PID)。
具体解释:
当你在 Shell 中执行一个命令并将它放入后台运行时(通过在命令后加上 `&`),`$!` 会返回该后台命令的进程ID。
这个进程ID是一个唯一的数字,用于标识系统中运行的进程。
举例说明:
1. 执行后台命令:
假设你在命令行中运行一个耗时的命令,并将它放到后台执行:
$ sleep 100 &
输出结果:
[1] 12345
`[1]` 是作业编号,表示这是第一个后台任务。
`12345` 是该后台任务的进程ID(PID)。
你可以使用 `$!` 来获取该后台进程的 PID:
$ echo $!
12345
输出结果:
12345
2. 使用 `wait` 命令等待后台进程:
如果你想等待这个后台进程结束并获取它的状态,可以使用 `wait` 命令,并通过 `$!` 传递后台进程的 PID:
$ wait $!
这个命令会等待进程 `12345` 执行完成。
3. 多个后台命令:
如果你同时启动了多个后台命令,`$!` 始终返回最近启动的后台命令的进程ID。
$ sleep 100 & 后台任务1
$ sleep 200 & 后台任务2
$ echo $! 返回的是第二个后台任务的进程ID
20000
在这个例子中,`$!` 输出的是第二个 `sleep 200` 命令的进程ID,因为它是最后一个后台执行的命令。
小结:
`$!` 返回 最近一个后台进程 的进程ID。
它通常用于管理和跟踪后台进程,尤其是在脚本中需要等待或终止后台进程时非常有用。