cómo obtener una variable dinámica en una consulta de un script de shell

cómo obtener una variable dinámica en una consulta de un script de shell

La última parte de mi guión sólo está pendiente.

Consulte amablemente el código a continuación.

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"

Bien, la pregunta principal es esta... así que tengo una columna en mi tabla llamada posting_dates. Debido a la fecha de publicación, podemos saber que los datos presentes en la tabla son de esa fecha en particular.

Ahora el problema dentro de mi script es que no puedo usar ninguna variable que cambie en la consulta. simplemente no funciona ya que toma la consulta como una declaración.

básicamente lo que quiero es esto

Debo hacer una consulta de este tipo en la que no necesito mencionar ninguna fecha. Quiero que recupere datos de ese día en particular. porque no puedo cambiar la consulta cada vez.

No puedo estar como en posting_date="2020-03-30", necesito algo que realice cambios automáticamente en la consulta todos los días. porque se utilizará para crear un archivo de esa fecha en particular.

Realmente necesito ayuda para esta gente.

Gracias y saludos, Sagar Mandal.

Respuesta1

Simplemente no uses comillas simples:

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'";

De esa manera, también podrás obtener el nombre del archivo desde el principio:

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

Tenga en cuenta también que sudate formato probablemente no sea el que desea. Tienes esto:

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

Pero probablemente quieras esto:

$ date +%F
2020-04-14

Entonces:Now=$(date +%F) .

información relacionada