我一直在使用 Jinja2 来创建和渲染 Bash 脚本的模板(除其他外),我一直缺少像在 Mako 中那样拥有完整的 python 的功能。
目前让我无法使用 Mako 的事情似乎相当微不足道,那就是 Mako 的内联 begin/end ${
/}
语法与 Bash 自己的语法冲突(而 Jinja2 没有)
所以我想知道的是:有什么方法可以将 Mako 的开始/结束${
/}
语法更改为其他东西,而其他东西与 Bash 不冲突。
(否则,我是否遗漏了一些明显的东西?)
我一直在使用 Jinja2 来创建和渲染 Bash 脚本的模板(除其他外),我一直缺少像在 Mako 中那样拥有完整的 python 的功能。
目前让我无法使用 Mako 的事情似乎相当微不足道,那就是 Mako 的内联 begin/end ${
/}
语法与 Bash 自己的语法冲突(而 Jinja2 没有)
所以我想知道的是:有什么方法可以将 Mako 的开始/结束${
/}
语法更改为其他东西,而其他东西与 Bash 不冲突。
(否则,我是否遗漏了一些明显的东西?)
通过预处理器运行您的模板:
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")