![如何在没有与号(&)的情况下在后台运行命令?](https://linux22.com/image/1086201/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%E4%B8%8E%E5%8F%B7%EF%BC%88%26%EF%BC%89%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%9C%A8%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4%EF%BC%9F%20.png)
如何在 Bash 中在后台运行命令,并且命令末尾不带与号 (&)?
更新:
我想这样做,这样我就可以做到while inotifywait -e modify app.py; do killall -9 python; python app.py &; done
,但由于语法的原因,这是不可能的。
答案1
使用coproc python app.py
从man bash
协同进程
协同进程是前面带有 coproc 保留字的 shell 命令。协同进程在子 shell 中异步执行,就像命令已使用 & 控制运算符终止一样,在执行 shell 和协同进程之间建立了双向管道。
协同处理的格式为:
coproc [名称] 命令 [重定向]
答案2
你的语法稍微有点不对:
while inotifywait -e modify app.py; do killall -9 python; python app.py &; done
它应该是:
while inotifywait -e modify app.py; do killall -9 python; python app.py & done
;
与 C 类语言不同,或之前不能有空语句&
。