как получить динамическую переменную в запросе скрипта оболочки

как получить динамическую переменную в запросе скрипта оболочки

Последняя часть моего сценария еще только ожидает своего завершения.

пожалуйста, обратитесь к коду ниже.

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. Благодаря дате публикации мы можем узнать, что данные, представленные в таблице, относятся к этой конкретной дате.

Теперь проблема в моем скрипте заключается в том, что я не могу использовать никакую переменную, которая изменяется в запросе. Он просто не работает, поскольку воспринимает запрос как оператор.

так что в основном я хочу вот это

Мне нужно сделать такой запрос, в котором мне не нужно упоминать какую-либо дату. Я хочу, чтобы он извлекал данные за этот конкретный день. Потому что я не могу менять запрос каждый раз.

Я не могу сделать что-то вроде posting_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).

Связанный контент