2012-09-25 84 views
1

我正在使用handlebars.js爲我們的單頁應用程序呈現客戶端模板(在node.js服務器端使用Jade)。如何在bash命令行上輸出文件列表

我想在服務器端預編譯句柄模板並將它們捆綁爲一個JS文件發送給客戶端。

目前,我用handlebars編譯模板,像這樣:

$ handlebars template1.handlebars template2.handlebars -f precompiled_templates.js 

我想編寫一個bash腳本,可以讀取所有的目錄中*.handlebars文件,然後通過把手編譯運行它們。所以,如果我有一個目錄,如下所示:在模板目錄

templates/ 
    temp1.handlebars 
    temp2.handlebars 
    temp3.handlebars 
    temp4.handlebars 

運行我的bash腳本(或者一個行命令)將基本上運行以下handlebars命令:

$ handlebars temp1.handlebars temp2.handlebars temp3.handlebars temp4.handlebars -f precompiled_templates.js 

有誰知道我如何編寫一個bash腳本來獲取目錄中的所有句柄文件到上面的命令行中?

回答

2

它看起來像你想類似

handlebars templates/*.handlebars -f precompiled_templates.js 

的東西,除非你將與「模板」前綴,以每個文件結束了。我的首選方法需要兩行:

files=(templates/*.handlebars) 
handlebars "${files[@]#templates/}" -f precompiled_templates.js. 

第一行將所有需要的文件放在一個數組中。在第二行中,我們展開數組的內容,但從結果擴展中的每個元素中剝離「templates /」前綴。

+0

我試過'$ handlebars * .handlebars -f ...'但它沒有工作,但那是因爲我指向錯誤的目錄!問題解決了! – Gaurav

0

在bash中,列出了可與雙引號中的字符串創建:

FILES="/etc/hosts /etc/passwd" 
for file in $FILES; do cat $file ; done 

<cat all files> 

您還可以使用find和exec命令。

人[找到| EXEC]欲瞭解更多信息

1

在模板目錄下執行:

handlebars `find -name *.handlebars` -f precompiled_templates.js 

背蜱意味着它會執行該命令,然後返回結果,所以你實際上你對每個文件運行它返回車把。如上所述,find會查找當前文件和子目錄中的文件,因此請確保從正確的位置運行它。

相關問題