Bash获取在子shell中启动的进程的进程ID

Jon*_*ono 5 bash shell process subshell

我在这里看这个问题,但它似乎不适合我:如何在命令行上获取bash子进程的进程ID

所以我有一个命令,我在子shell中开始,如:

(sleep 10 &)
Run Code Online (Sandbox Code Playgroud)

然后,我如何获取该睡眠命令的进程ID,并等待它?

如果我在上面的链接中没有任何进程ID与我看到的匹配后执行ps.

谢谢.

Joh*_*ica 5

父进程是唯一可以正确等待子进程完成的进程,因此您需要从子 shell 中进行等待。

(sleep & wait)
(sleep & pid=$!; wait $pid)
Run Code Online (Sandbox Code Playgroud)