首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何运行fswatch来调用带有静态参数的程序?

如何运行fswatch来调用带有静态参数的程序?
EN

Stack Overflow用户
提问于 2014-09-05 23:46:43
回答 2查看 9.7K关注 0票数 19

我曾经像这样使用fswatch v0.0.2 (在这个实例中,当文件发生变化时运行django测试套件)

$>fswatch . 'python manage.py test'

这可以很好地工作。

我想排除一些导致测试在每次保存时多次运行的文件(Sublime text正在保存.tmp文件,我怀疑.pyc文件也会导致这种情况)。

所以我升级了fswatch来启用-e模式。

然而,fswatch的方式改变了,这给我带来了麻烦-它现在接受一个管道参数,如下所示:

$>fswatch . | xargs -n1 program

我不知道如何将参数传递给这里的程序。例如,这不起作用:

$>fswatch . | xargs -n1 python manage.py test

这也不是:

$>fswatch . | xargs -n1 'python manage.py test'

如何才能在不将命令打包到bash脚本中的情况下做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-08 18:03:42

fswatch文档( Texinfo manualwikiREADME)提供了如何完成此操作的示例:

代码语言:javascript
复制
$ fswatch [opts] -0 -o path ... | xargs -0 -n1 -I{} your full command goes here

陷阱:

  • xargs -0,correctly.
  • fswatch -o::使用它来确保带换行符的路径被解释,并使用它使集合中的所有事件“冒泡”到单个事件中,只打印set.
  • -I{}:中的记录数指定占位符是您在不希望将记录(在这种情况下,由于使用了-o,集合中的记录数)向下传递给正在执行的命令时,xargs无法正确解释命令参数的诀窍。
票数 23
EN

Stack Overflow用户

发布于 2014-09-08 18:47:11

另一种答案不是反对xargs的默认原因--将输出作为参数传递给要运行的命令。

fswatch . | (while read; do python manage.py test; done)

它仍然有点冗长/语法,所以我创建了一个超级简单的bash脚本fswatch-do,它为我简化了事情:

代码语言:javascript
复制
#!/bin/bash  
(while read; do "$@"; done)

用法:

fswatch -r -o -e 'pyc' somepath | fswatch-do python manage.py test someapp.SomeAppTestCase

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25689589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档