如何在Bash中获取从eval启动的进程的PID?

时间:2017-06-24 12:46:07

标签: linux bash

在bash脚本中执行此类操作时:

#!/bin/bash
ls & echo $!

ls的pid将打印到控制台。但是当我改变它时:

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

它不再起作用了。为什么会这样,是否有解决方法?

1 个答案:

答案 0 :(得分:1)

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。