쉘 스크립트 쿼리에서 동적 변수를 얻는 방법

쉘 스크립트 쿼리에서 동적 변수를 얻는 방법

내 스크립트의 마지막 부분은 보류 중입니다.

아래 코드를 참고해주세요.

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"과 같을 수는 없습니다. 매일 쿼리를 자동으로 변경하는 것이 필요합니다. 특정 날짜의 파일을 만드는 데 사용될 것이기 때문입니다.

이 사람들에게는 정말로 도움이 필요합니다.

감사합니다, Sagar Mandal

답변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) .

관련 정보