データベースにクエリを実行し、結果をファイルにパイプする bash スクリプトがあります。
date=`date +"%Y/%m/%d"`
/usr/bin/mysql -u $db_user -p$db_pass -h $db_name $db_schema << MYSQLEOF > $output_file
select *
from table
where date = $date
MYSQLEOF
再利用性/直交性のために、このプロジェクトを他の領域に拡大しています。クエリを独自のファイルに格納し、次のように呼び出したいと思いました。
cmd=`echo $sql_file`
/usr/bin/mysql -u $db_user -p$db_pass -h $db_name $db_schema -e "$cmd" > $output_file
SQL ファイル:
select *
from table
where date = $date
SQLファイル内で変数($ date)を保持および調整できる一方で、(bashで)これを行う方法を見つけるのに苦労しています。.sql ファイルを bash 変数にエコーすると、「$date」をリテラル文字列として取得できませんでした。
bash に解決策はありますか、それとも perl などを調べてこれを処理する必要がありますか?