3

私は Jinja2 を使用して Bash スクリプトのテンプレートを作成およびレンダリングしてきましたが (とりわけ)、Mako のように完全な Python を利用できるという力を失っていました。

現時点で Mako を使用できない理由は、Mako のインラインの begin/end ${/}構文が Bash 独自の構文と衝突する (Jinja2 の構文は衝突しない)ことで、些細なことのように思えます。

だから私が知りたいのは: Mako の begin/end ${/}構文を別のものに変更する方法はありますか? その何か他のものは Bash と衝突しないものです。

(そうでなければ、明らかな何かが欠けていますか?)

4

1 に答える 1

1

プリプロセッサを介してテンプレートを実行します。

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")
于 2014-04-10T20:37:09.390 に答える