如何从inotifywait事件中获取文件名?

所以我正在做一个简单的inotifywait循环来监视Bootstrap目录中的更改:

 while inotifywait -r -q --format %w bootstrap/; do echo "something happened" [[ $filename == *.js ]] && uglifyjs ..... [[ $filename == *.less ]] && lessc bootstrap.less done 

你真的不需要担心内部,但我只是无法将文件名恢复到bash范围。 inotifywait回显文件名(在format参数的帮助下),但我如何捕获并稍后使用它(在我的情况下,作为$filename )?


如果你想要一个简单,简短的测试工具:

 touch testfile while inotifywait testfile do; echo "..."; done 

然后你可以在想要触发时运行touch testfile

更简洁的方式在此博客条目中说明 :

 inotifywait -m -r -q --format '%w' bootstrap/ | while read FILE do echo "something happened on path $FILE" done 

事实certificate我只需要重构一下while以便我捕获inotifywait的输出:

 while true; do echo "something happened" filename=$(inotifywait -r -q --format %w bootstrap/) [[ $filename == *.js ]] && uglifyjs ..... [[ $filename == *.less ]] && lessc bootstrap.less done 

我仍然很想知道是否有更干净的方法来做到这一点。