Linux‎ > ‎

テンプレート文字列への値の埋め込み

テンプレート文字列に値を埋め込む方法です。

sedを使う方法
F_DATE=20130408
SQL_STR="SELECT A FROM TABLENAME WHERE YMD_DATE = 'FDate';"
SQL_STR=`echo ${SQL_STR} | eval sed 's/FDate/${F_DATE}/'`

変数展開その1
F_DATE=20130408
SQL_STR="SELECT A FROM TABLENAME WHERE YMD_DATE = \'${F_DATE}\';"
SQL_STR=`eval echo ${SQL_STR}`

変数展開その2
F_DATE=\'20130408\'
SQL_STR="SELECT A FROM TABLENAME WHERE YMD_DATE = ${F_DATE};"
SQL_STR=`eval echo ${SQL_STR}`

すべて結果は以下になります。
SELECT A FROM TABLENAME WHERE YMD_DATE = '20130408';

変数展開は、sedを使う方法に比べ埋め込み処理はシンプルですが、クォーテーションのエスケープが必要になります。どれを選択するかは好みの問題かもしれませんが、値やテンプレートは比較的更新頻度が高いと思われるため、値にもテンプレートにもエスケープが必要のないsedを使う方法が個人的にはお勧めです。

2013/04/08