![Прочитать и удалить строки в файле, дождаться новых строк в конце](https://rvso.com/image/1304057/%D0%9F%D1%80%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C%20%D0%B8%20%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8%20%D0%B2%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B5%2C%20%D0%B4%D0%BE%D0%B6%D0%B4%D0%B0%D1%82%D1%8C%D1%81%D1%8F%20%D0%BD%D0%BE%D0%B2%D1%8B%D1%85%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%20%D0%B2%20%D0%BA%D0%BE%D0%BD%D1%86%D0%B5.png)
На самом деле я ищу скрипт bash, который отслеживает файл, выполняет каждую новую строку в файле и затем удаляет ее. Когда весь файл обработан, скрипт должен ждать новых строк.
Я искал какие-либо ответы, но не нашел ничего, кроме прочтения каждой строчки в файле.
Кстати, эффективен ли bash для решения такой задачи или мне следует написать небольшую программу на языке C для этого?
решение1
Следующий код делает все, о чем вы просите, за исключением удаления строк из файла:
$ ./script && tail -n0 -f script | while read line; do eval "${line}"; done;
Сначала просто запустите файл, а затем, используя tail и eval, вы можете довольно легко добиться желаемого поведения.
решение2
Если удаление линии не является обязательным, вы также можете попробовать:
tail -f filename | parallel eval "{}"