2016-09-23 1 views
-1

シェルスクリプトより:エラーを選択してください。シェルスクリプトはシェルスクリプト経由で古いデータをmysqlから削除することができません

#!/bin/bash 

selection= 
until [ "$selection" = "0" ]; do 
    echo "==============================" 
    echo "=========PROGRAM MENU=========" 
    echo "1 - Show Date and Time" 
    echo "2 - Show Data Database" 
    echo "3 - Delete data 90 day ago" 
    echo "" 
    echo "0 - Back to command" 
    echo "==============================" 
    echo -n "Enter selection : " 
    read selection 
    echo "" 

    case $selection in 
     2) mysql -u [user] -p[password] -e 'USE eventime;SELECT date1,time1 FROM dt;' ;; 
     1) dti=$(date '+%d/%m/%Y %H:%M:%S'); 
      echo "This is Date and Time : " $dti ;; 
     3) DELETE FROM dt WHERE date1 <('SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(now(),'%Y-%m-%d'),'-1'),'%Y-%m-%d')- INTERVAL 90 DAY'); ;; 
     0) Ctrl+Z ;; 
     *) echo "Please enter 1, 2, 3 or 0" 
    esac 
done 

出力を削除することはできません:3を選択してください:SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(now(),%Y-%m-%d),-1),%Y-%m-%d)- INTERVAL 90 DAY: command not found...

+1

http://www.shellcheck.net/からスクリプトのエラーを修正してから、一度試してください – Inian

+0

スクリプトには何が問題なのですか? – Shadow

答えて

0

スクリプトでエラーが発生しました。しかし、あなたは非常に簡単に、mysqlのスクリプトをユーザーにすることができます。 あなたは、90日より(新しい)より古い行を削除する必要がある場合:

SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(now(),'%Y-%m-%d'),'-1'),'%Y-%m- %d')-INTERVAL 90 DAY; 

結果を確認してください、日付によってあなたが必要とする必要があります。そうでない場合は、正しい照会を行います。 だから、

delete from dt where date1 >(SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(now(),'%Y-%m-%d'),'-1'),'%Y-%m-%d')- 
INTERVAL 90 DAY); 

注意が必要と疑いの場合に使用するSQL函数のヘルプをお読みください。 次回は得られた出力、ソフトウェアバージョンなどを入力するので、より正確な回答が得られます。 あなたのbashスクリプトにはshao-bao、ライセンス情報、コマンドmysqlが含まれています。

+0

タイは言う:ขอบคุณครับ=ありがとう:) –

関連する問題