我一直在使用Jinja2来创建和渲染Bash脚本的模板(以及其他内容),而且我一直错过了在Mako中提供完整python的能力。
让我不能使用Mako的东西看起来相当微不足道,这就是Mako的内联开始/结束${
/ }
语法与Bash自己的语法冲突(而Jinja2没有)
所以我想知道的是:有没有办法将Mako的开始/结束${
/ }
语法改为其他东西,其他东西是不会与之冲突的东西击。
(否则,我错过了一些明显的东西吗?)
答案 0 :(得分:1)
通过preprocessor:
运行模板from mako.template import Template
import re
def bash_preprocessor(source):
source = re.sub(r"\${(.+?)}", r"${'${'}\1${'}'}", source)
source = re.sub(r"\^\[(.+?)\]", r"${\1}", source)
return source
t = Template("""
BAR='hi'
BAT='^[hoho]'
PATH='/path/to/crap'
EXECUTABLE=${PATH}/${BAR}/${BAT}
""", preprocessor=bash_preprocessor)
print t.render(hoho="boo")