在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。

关于linux - 如何获取从Bash中的eval启动的进程的PID?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44736532/

10-11 04:14