![如何从 inotifywait 事件中获取文件名?](https://linux22.com/image/970795/%E5%A6%82%E4%BD%95%E4%BB%8E%20inotifywait%20%E4%BA%8B%E4%BB%B6%E4%B8%AD%E8%8E%B7%E5%8F%96%E6%96%87%E4%BB%B6%E5%90%8D%EF%BC%9F.png)
因此我做了一个简单的inotifywait
循环来监视 Bootstrap 目录中的变化:
while inotifywait -r -q --format %w bootstrap/; do
echo "something happened"
[[ $filename == *.js ]] && uglifyjs .....
[[ $filename == *.less ]] && lessc bootstrap.less
done
您实际上并不需要担心内部结构,但我就是无法将文件名放回到 bash 范围。inotifywait
回显文件名(借助格式参数)但我如何捕获它并在以后使用它(在我的情况下为$filename
)?
如果您想要一个简单、简短的测试工具:
touch testfile
while inotifywait testfile do; echo "..."; done
然后,touch testfile
当您想要触发它时,您只需运行它即可。
答案1
更清洁的方式如下图所示这篇博文:
inotifywait -m -r -q --format '%w' bootstrap/ | while read FILE
do
echo "something happened on path $FILE"
done
答案2
事实证明我只需要重组while
以便捕获输出inotifywait
:
while true; do
echo "something happened"
filename=$(inotifywait -r -q --format %w bootstrap/)
[[ $filename == *.js ]] && uglifyjs .....
[[ $filename == *.less ]] && lessc bootstrap.less
done
我仍然很好奇是否有更清洁的方法来做到这一点。