如何在 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 类语言不同,或之前不能有空语句&
。