Combine Bash正则表达式
问题描述:
我有一个服务器有一些页面写在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为A
和B
。本质上,脚本需要整个构建路径,让我们说:
/views/less/style.less
,并取代less
到css
并替换views
到resources
。所以,最终路径(转换过程之后)变为:
/resources/css/style.css
任何帮助将不胜感激!
答
您可以通过斜线倍增取代的less
所有出现的一个变量:
A=${file//less/css}
+0
感谢您的回答,尽管我想将'less'替换为'css'并将'views'替换为'resources',而不是'less'的所有实例。 – 2015-03-31 13:49:36
我觉得代码将成为道路的可读性。对我来说,现在看起来很简洁。 – fedorqui 2015-03-31 13:14:45
我会重复使用相同的变量(而不是A,B&TO,只是:TO),但除此之外,很明显。 – 2015-03-31 13:18:33
这些不是正则表达式,它们是全局模式。 [shell参数扩展](https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion)不能嵌套,所以你别无选择,只能一次做一个。 – 2015-03-31 14:12:16