bashをテンプレート・エンジンとして使う
テンプレート・エンジン用のソフトウェアなんていらなかった。
手順
- テンプレートファイルを作成する
- 設定値ファイルを作成する
- 実行する
1. テンプレートファイルを作成する
/tmp/work/template.md
--- created: ${Created} author: ${Author} --- #
2. 設定値ファイルを作成する
/tmp/work/config.sh
Author=ytyaru Created=`date "+%Y-%m-%d %H:%M:%S+0900"`
3. 実行する
- ターミナルを起動する
- 以下のコードを実行する
template_file=/tmp/work/template.md config=/tmp/work/config.sh . "${config}" template="$(cat ${template_file})" eval "echo \"${template}\""
以下の出力が得られる。
--- created: 2019-02-20 16:23:24+0900 author: ytyaru --- #
所感
あとはこれを元にして便利にしていくだけ。
mkmd タイトル
たとえば上記のコマンドを打つと以下のパスに以下のファイルが出力される等。
/tmp/work/yyyyMMddHHmmss_タイトル.md
--- created: yyyy-MM-dd HH:mm:ss+0900 author: ytyaru --- # タイトル
ファイル出力はリダイレクトを使う。たとえば以下。
eval "echo \"${template}\"" > /tmp/work/some.md
名前空間汚染が気になる。グローバル変数を汚したくないからサブシェルで起動したい。
参考
- https://code.i-harness.com/ja-jp/q/5ed457
- https://serverfault.com/questions/287688/templating-with-linux-in-a-shell-script/699377#699377
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12
$ uname -a Linux raspberrypi 4.14.71-v7+ #1145 SMP Fri Sep 21 15:38:35 BST 2018 armv7l GNU/Linux