シェルスクリプトでシェル変数を使ったテンプレートに文字を埋め込む簡単なお仕事。

evalとかすごく格好悪いけど、自分用にお手軽に。

スクリプト template.sh

#!/bin/sh
TEMPLATE=template_yaml.txt
BUFIFS=${IFS}
grep -v '^#' $1 | while read NAME ADDRESS AGE SEX;do
    IFS=
    while read line;do
        eval echo \"$line\"
    done<${TEMPLATE}
    IFS=${BUFIFS}
done

テンプレート template_yaml.txt

${NAME}:
  AGE: ${AGE}
  ADDRESS: ${ADDRESS}
  SEX: ${SEX}

埋め込みたいリスト list

TARO TOKYO 1 MALE
JIRO CHIBA 2 MALE
HANAKO SAITAMA 3 FEMALE
SAKURA KANAGAWA 4 FEMALE
ICHITARO YAMANASHI 5 MALE
SANSHIRO TOCHIGI 6 MALE
YOKO GUNMA 7 FEMALE

実行例

$ sh template.sh list
TARO:
  AGE: 1
  ADDRESS: TOKYO
  SEX: MALE
JIRO:
  AGE: 2
  ADDRESS: CHIBA
  SEX: MALE
HANAKO:
  AGE: 3
  ADDRESS: SAITAMA
  SEX: FEMALE
SAKURA:
  AGE: 4
  ADDRESS: KANAGAWA
  SEX: FEMALE
ICHITARO:
  AGE: 5
  ADDRESS: YAMANASHI
  SEX: MALE
SANSHIRO:
  AGE: 6
  ADDRESS: TOCHIGI
  SEX: MALE
YOKO:
  AGE: 7
  ADDRESS: GUNMA
  SEX: FEMALE
入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界
ブルース ブリン Bruce Blinn

ソフトバンククリエイティブ 2003-02
売り上げランキング : 56869

Amazonで詳しく見る
by G-Tools