Search code examples
inotifywaitinotify-tools

inotifywait not piping output to console


I have the following shell script running a inotifywait command. I want to print the output echo to the console upon every modify event.

The script:

#!/bin/sh
while inotifywait -e modify -r -m ./ --exclude '\.sh$'; do
  echo test
done

When I change one file in the specified directory, i get the standard output from 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

I have two questions:

Why is the modified event registered twice? I only updated the file once. Why is "test" not being printed to the console in which I'm running the script?


Solution

  • I had a similar issue. I resolved the second part by restructuring my while:

    inotifywait -e modify -r -m ./ --exclude '\.sh$' |
    while read E; do                      
      echo "----------------hello $E"               
    done