如何在 shell 脚本的查询中获取动态变量

如何在 shell 脚本的查询中获取动态变量

我的剧本的最后一部分只是待定。

请参考下面的代码。

master_db_user='root'
master_db_passwd='123'
master_db_port='3306'
master_db_host='localhost'
master_db_name='uppcldashboard'

Now=$(date +"%d-%m-20%Y")



#Preparing script 

#SQL_Query='select * from test_table;'

#MySql Command to connect to a database 

mysql -u$master_db_user -p$master_db_passwd -D$master_db_name -e  'select * from uppcl_amount_details into outfile "/created_files/uppcl.csv" fields terminated by "," lines terminated by "\n"';

mv /created_files/uppcl.csv /created_files/offline_collection$Now.csv

sed -i "1i ID","Cashier_id","Discom","Division_Code","division_Name" /created_files/offline_collection$Now.csv
echo "End of the Script"

好吧,主要问题是这个..所以我的表中有一个名为posting_dates 的列。由于发布日期,我们能够知道该表中存在的数据是该特定日期的。

现在我的脚本中的问题是我无法使用查询中发生变化的任何变量。它根本不起作用,因为它将查询作为语句。

所以基本上我想要的是这个

我要做这样一个查询,其中我不需要提及任何日期。我希望它能够获取那一天的数据。因为我不能每次都更改查询。

我不能像 posts_date="2020-03-30" 那样,我需要每天自动在查询中进行更改的东西。因为它将用于制作该特定日期的文件。

这个人真的需要帮助。

谢谢和问候, 萨加尔·曼达尔

答案1

只是不要使用单引号:

mysql -u$master_db_user -p$master_db_passwd -D$master_db_name \
    -e "select * from uppcl_amount_details where date='$Now' into \
         outfile '/created_files/uppcl.csv' fields terminated by ',' \
          lines terminated by '\n'";

这样,您还可以从头开始获取文件名:

into outfile '/created_files/offline_collection$Now.csv'

另请注意,您的date格式可能不是您想要的。你有这个:

$ date +"%d-%m-20%Y"
14-04-202020

但你可能想要这个:

$ date +%F
2020-04-14

所以:Now=$(date +%F)

相关内容