このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

簡単なテンプレート処理を行うときは

昨日、bashのprintfの話をしました。printfは、以前に簡単なテンプレート処理をする目的で紹介したのでした →「このシェル・ワンライナーがけっこう役立った: printfコマンドで超簡易テンプレート

なんかプレースホルダーのマークがあって、プレースホルダー部分を実際の文字列で置換するのがテンプレート処理の基本です。


printf "%s,\n%s.\n" Hello World

これも、%sで示されるプレースホルダーがあって、実際の文字列「Hello」と「World」で置き換えているので、まー「テンプレート処理」と言えなくもないでしょう。

実際の文字を変数にセットして、ドルマークの変数参照で置換する方法もあります。


greeting=Hello whom=World; echo "$greeting,
$whom.
"

$greetingと$whomが文字列内の変数参照です。シェルの文字列は、改行をそのまま含んでもいいので三行になっています。

複数行のテキストを書くにはヒアドキュメントという方法もあります。


greeting=Hello whom=World; cat <<EOF
$greeting,
$whom.
EOF

sedを使って置換することもできます。プレースホルダーはバーセントで囲まれた名前としました。


echo "%greeting%,
%whom%.
"| sed -e 's/%greeting%/Hello/g' -e 's/%whom%/World/g'

これらの簡単な方法では機能的に不足するときは、Unix/Linuxならm4というマクロプロセッサがあります。地味な存在ですが、システムに必ず入っているし、意外と強力ですよ。

「m4はチョット…」というむきは、mustache(http://mustache.github.io/)というテンプレート言語だと色々なスクリプト言語による実装があるので、お好みの言語処理系で使えます。