2012-09-11 49 views
4

我特別想同時觀看2個不同的文件類型在2個子目錄:inotifywait要根據文件類型的運行命令修改

    .coffee文件類型在「JS」子目錄
    .styl文件類型在「CSS」子目錄

我只知道這麼多bash和我想要得到這樣的功能

while inotifywait --format %w%f ./{css,js}/*.{styl,coffee}; do 
    # regex pattern to match the file ending 
    # and define it to $ending 

    if[ $ending == coffee ] 
    then 
    coffee -c $file 
    elif[ $ending == styl ] 
    then 
    stylus -c $file 
    fi 
done 



// //編輯修改 這一行:

while inotifywait --format %w%f ./{css,js}/*.{styl,coffee}; do 

所以現在檢查這兩個文件,但如果有一個在JS的css文件夾沒有.coffee文件或文件.styl,則返回沒有找到文件的錯誤。

另外我注意到,當我運行該腳本,它返回/運行下面的3倍

Setting up watches. 
Watches established. 
./css/styles.styl 
+0

inotifywait使用POSIX擴展正則表達式,它是有限的:http://stackoverflow.com/questions/7943528/inotifywait-exclude-regex-pattern-formatti ng只需將這些腳本分開:每個咖啡/ js一個,每個styl/css一個 –

回答

2

不是乾淨的解決方案,但工程

#!/bin/sh 

while file=$(inotifywait -r -e modify --format "%w%f" ./); do 
    EXT=${file##*.} 
    if [ $EXT = "styl" ] 
    then 
    stylus -c $file 
    fi 
    if [ $EXT = "coffee" ] 
    then 
    coffee -c $file 
    fi 
done 

如果你有一個更好的解決辦法,只有手錶我想要的文件,然後我都耳朵