Как запустить команду на заднем плане без амперсанда (&)?
Как запустить команду в фоновом режиме в Bash без амперсанда (&) в конце команды?
Обновление: я хочу сделать это, чтобы я мог сделать while inotifywait -e modify app.py; do killall -9 python; python app.py &; done
, но это невозможно из-за синтаксиса.
2 ответа
Использование coproc python app.py
От man bash
Coprocesses
Копроцесс - это команда оболочки, которой предшествует зарезервированное слово coproc. Копроцесс выполняется в подоболочке асинхронно, как если бы команда была прервана оператором & control, с двухсторонним каналом, установленным между исполняющей оболочкой и сопроцессом.
Формат для сопроцесса:
команда [NAME] coproc [перенаправления]
Ваш синтаксис немного выключен:
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-подобных языков, вы не можете иметь пустой оператор до ;
или же &
,