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