使用exec执行命令并将进程ID传递给另一个命令

heb*_*bbo 0 linux bash command-line process exec

我希望您在Linux中执行命令并获取已启动进程的进程ID,并将其传递给另一个命令。

$!在bash中尝试了该变量,如果进程像这样直接启动,它将起作用:

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

但是,如果我这样使用exec:

exec ls &
echo $!
Run Code Online (Sandbox Code Playgroud)

$!变量将为空白。

我必须使用exec。有什么线索可以解决这个问题吗?

谢谢。

del*_*ver 5

$!变量将为空。

你甚至尝试过吗?

> exec ls & echo "pid = $!"
[1] 29443
pid = 29443
Run Code Online (Sandbox Code Playgroud)

显然,它并不像您理论上的那么空白。该过程不必完成;pid可立即使用。