Bash:在文件保存上执行脚本?

时间:2010-07-19 17:07:35

标签: unit-testing bash automation shell

当我保存给定目录中的任何文件时,我想使用Bash自动运行测试套件。

是否存在bash在保存事件上执行给定脚本的机制?

感谢。

:: EDIT ::

我应该提到我正在使用OSX。

4 个答案:

答案 0 :(得分:5)

编辑:你(OP)提到你使用OSX。我不知道OSX上有任何类似的工具。有一个名为“kqueue”的低级系统调用(继承自BSD),但您必须实现自己的用户级工具。有一个来自Apple的示例应用程序,名为“Watcher”,但它只是概念证明,并没有做你想要的。

Stack Overflow上有another thread这个问题(也是不确定的)。

由于缺少合适的工具,如果您使用的是特定的编程语言,我建议您寻找已经为其编写的解决方案。否则,我认为你自己坚持轮询和管理变更......

这是我原来的基于Linux的答案,用于存档目的:

如果您使用的是Linux,则可能需要查看inotify。更具体地说,您可以安装inotify-tools,其中包括inotifywait

有了它,您可以监视文件和目录中的许多事件,例如访问,修改,打开,关闭等等。一旦检测到指定的事件,inotifywait就可以退出,因此一个简单的循环可以得到你想要的东西:

while :; do
    inotifywait -e modify /some/directory
    run_test_suite
done

顺便说一句,许多编程语言和环境已经拥有自己的连续测试运行器(例如,使用Python,您可以使用tdaemon等。)

答案 1 :(得分:0)

您可以使用incron来检测文件何时关闭。

答案 2 :(得分:0)

仅当您的系统中没有inotify(Linux内核< 2.6.13)时才使用dnotify。

dnotify是观看目录的标准linux方法:

http://en.wikipedia.org/wiki/Dnotify

代码示例。观看dir的变化:


dnotify WATCH_DIR -M -e SCRIPT_TO_EXECUTE

请注意,每当WATCH_DIR中的任何文件发生变化时,都会执行SCRIPT_TO_EXECUTE。

答案 3 :(得分:0)