例如...
inotifywait --event modify ./my-file | doSomething
...将等待,直到发生任何事件my-file
,此时它将退出。如果事件不是事件modify
,则没有输出,退出代码为零。
这非常令人困惑,导致我们需要添加一个循环:
while true; do
local eventInfo=$(inotifywait --event modify ./my-file)
if [[ "${eventInfo}" != '' ]]; then
doSomething ${eventInfo}
break
fi
# if we get here, then some other event we don't care about happened -- why??
done
这似乎有悖常理——为什么会这样,有没有任何文件表明当发生非监视事件时--event
标志不会停止退出?inotifywait
再生产
在终端 1 中,在编辑器中创建并打开一个测试文件 ( test
)。
在终端 2 中运行:
inotifywait -q --event modify ./test | cat
在终端 1 中,修改并保存文件。注意终端 2 输出./test MODIFY
and exist -- good。
在终端 2 中再次运行相同的命令。
在终端 1 中,退出编辑器并删除文件 ( test
)。
在终端 2 中,请注意inotifywait
已退出,没有任何输出——它是由于DELETE
未配置为“关心”的事件而退出的。