So erhalten Sie dynamische Variablen in einer Abfrage eines Shell-Skripts

So erhalten Sie dynamische Variablen in einer Abfrage eines Shell-Skripts

Der letzte Teil meines Skripts steht nur noch aus.

Bitte beachten Sie den Code unten.

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"

okay, die Hauptfrage ist folgende: Ich habe in meiner Tabelle eine Spalte mit dem Namen „posting_dates“. Anhand des Veröffentlichungsdatums können wir erkennen, dass die in der Tabelle vorhandenen Daten von diesem bestimmten Datum sind.

jetzt besteht das Problem in meinem Skript darin, dass ich keine Variable verwenden kann, die sich in der Abfrage ändert. Es funktioniert einfach nicht, da es die Abfrage als Anweisung annimmt.

also im Grunde genommen will ich das hier

ich möchte eine solche Abfrage machen, in der ich kein Datum angeben muss. Ich möchte, dass sie die Daten des jeweiligen Tages abruft, weil ich die Abfrage nicht jedes Mal ändern kann.

Ich kann nicht so sein, dass posting_date="2020-03-30" lautet, ich brauche etwas, das jeden Tag automatisch Änderungen an der Abfrage vornimmt, weil es verwendet wird, um eine Datei mit diesem bestimmten Datum zu erstellen.

Ich brauche wirklich Hilfe, Leute.

Vielen Dank und Grüße, Sagar Mandal

Antwort1

Verwenden Sie einfach keine einfachen Anführungszeichen:

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

Auf diese Weise können Sie auch den Dateinamen von Anfang an richtig festlegen:

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

Beachten Sie auch, dass Ihr dateFormat wahrscheinlich nicht das gewünschte ist. Sie haben Folgendes:

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

Aber Sie möchten wahrscheinlich Folgendes:

$ date +%F
2020-04-14

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

verwandte Informationen