如何获得在Bash中从eval开始的进程的PID?

当在bash脚本中做这样的事情时:

#!/bin/bash ls & echo $! 

ls的pid将被打印到控制台上。 但是当我改变它到这个:

 #!/bin/bash command="ls & echo $!" eval "$command" 

它将不再工作。 为什么是这样的,有没有解决方法?

eval的命令结尾处在后台运行命令:

 #!/bin/bash cmd="ls > /dev/null &" eval "$cmd" eval_pid=$! bash_pid=$$ echo bash_pid: ${bash_pid}, eval_pid: ${eval_pid} 

输出:

 bash_pid: 25926, eval_pid: 25927 

获取eval启动的进程的pid。