2015-03-31 71 views
0

我有一個服務器有一些頁面寫在LESS。我有一個launch.sh腳本,它基本上構建了LESS中的所有CSS文件,將它們放入一個目錄中,並啓動服務器(用Node.js編寫)。Combine Bash正則表達式

這裏是腳本是什麼樣子目前:

# Searches the CSS directory for LESS files 
for file in views/less/*.less 
do 
    FROM=$file 
    A=${file/.*/.css} 
    B=${A/less/css} 
    TO=${B/views/resources} 
    echo "$FROM -> $TO" 
    # Compiles each LESS file into a CSS file of the same name with minified output 
    lessc --clean-css $FROM $TO 
done 

一切工作正常,但我想知道如果我能凝結正則表達式expressins,denoated爲AB。本質上,腳本需要整個構建路徑,讓我們說:

/views/less/style.less 

,並取代lesscss並替換viewsresources。所以,最終路徑(轉換過程之後)變爲:

/resources/css/style.css 

任何幫助將不勝感激!

+1

我覺得代碼將成爲道路的可讀性。對我來說,現在看起來很簡潔。 – fedorqui 2015-03-31 13:14:45

+0

我會重複使用相同的變量(而不是A,B&TO,只是:TO),但除此之外,很明顯。 – 2015-03-31 13:18:33

+0

這些不是正則表達式,它們是全局模式。 [shell參數擴展](https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion)不能嵌套,所以你別無選擇,只能一次做一個。 – 2015-03-31 14:12:16

回答

0

您可以通過斜線倍增取代的less所有出現的一個變量:

A=${file//less/css} 
+0

感謝您的回答,儘管我想將'less'替換爲'css'並將'views'替換爲'resources',而不是'less'的所有實例。 – 2015-03-31 13:49:36