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