我有一个 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
我无法找出如何(在 bash 中)执行此操作,同时仍然能够在 sql 文件中拥有和调整变量($date)。将 .sql 文件回显到 bash 变量中,我无法让“$date”不被视为文字字符串。
bash 中是否有解决方案,或者我应该研究一下 perl 之类的东西来处理这个问题?