2014-09-05 88 views
8

我用fswatch v0.0.2像這樣(在這種情況下運行Django的測試套裝,當一個文件更改)如何使用靜態參數運行fswatch來調用程序?

$>fswatch . 'python manage.py test'

能正常工作。

我想排除一些是導致測試運行超過每一次保存更多的文件(文本卓異被保存.tmp文件,我懷疑pyc文件也導致此)

所以我升級fswatch啓用-e模式。

然而fswatch的方式發生了變化,這是造成我的麻煩 - 它現在接受管的說法,像這樣:

$>fswatch . | xargs -n1 program

我無法弄清楚如何參數傳遞給該程序在這裏。例如這不起作用:

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

也沒有這樣的:

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

我怎麼能做到這一點沒有在bash腳本封裝了我的命令?

回答

14

fswatch文檔(無論是Texinfo manual,或wiki,或README)有如何做到這一點的例子:

$ fswatch [opts] -0 path ... | xargs -0 -n1 -I{} your full command goes here 

陷阱:

  • -0:用它來製作具有一定的路徑換行符被正確解釋。
  • -o:使用它將fswatch中的所有事件「冒泡」爲一個只打印集合中記錄數的單個事件。
  • -I{}:指定一個佔位符是你錯過了xargs在這些情況下,您不希望記錄正確解釋你的命令參數的伎倆(在這種情況下,由於使用-o,記錄在集數)傳遞給正在執行的命令。
+0

已經標記爲正確,因爲它回答了我最初的問題的癥結所在 - 使用xargs而不通過o utput作爲要運行的命令的參數。 – 2014-09-08 10:48:31

8

另一個答案,不與xargs的默認原因 - 將輸出作爲參數傳遞給要運行的命令。

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

這仍然是一個有點羅嗦/ syntaxy,所以我創建了一個超級簡單的bash腳本fswatch-do,簡化的東西對我來說:

#!/bin/bash 
(while read; do [email protected]; done) 

用法:

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

相關問題