inotifywait не передает вывод на консоль
У меня есть следующий сценарий оболочки, выполняющий команду inotifywait. Я хочу выводить выводимое эхо на консоль при каждом событии изменения.
Сценарий:
#!/bin/sh
while inotifywait -e modify -r -m ./ --exclude '\.sh$'; do
echo test
done
Когда я меняю один файл в указанном каталоге, я получаю стандартный вывод inotifywait:
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
./postgres/ MODIFY postgres_test.go
./postgres/ MODIFY postgres_test.go
У меня два вопроса:
Почему измененное событие регистрируется дважды? Я обновил файл только один раз. Почему "test" не выводится на консоль, на которой я запускаю сценарий?
1 ответ
Решение
У меня была аналогичная проблема. Я решил вторую часть путем реструктуризации моегоwhile
:
inotifywait -e modify -r -m ./ --exclude '\.sh$' |
while read E; do
echo "----------------hello $E"
done