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                                  
Другие вопросы по тегам