2015-03-31 95 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