在bash脚本中执行此类操作时:
#!/bin/bash
ls & echo $!
ls
的pid将打印到控制台。但是当我改变它时:
#!/bin/bash
command="ls & echo $!"
eval "$command"
它不再起作用了。为什么会这样,是否有解决方法?
答案 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。