2011-02-28 77 views
0

第一個查詢工作正常,但第二個查詢不起作用。爲什麼?怎麼了?什麼是錯誤與這個bash腳本[mysql-query]

#/bin/bash 
MyUSER="root"  # USERNAME 
MyPASS="pass"  # PASSWORD 
MyHOST="localhost"   # Hostname 
DBS="$(mysql -u $MyUSER -h $MyHOST -p$MyPASS mydbname -Bse 'select `id` from `table` where `reset`=1 and `status`=0')" 
if [ $DBS > 0 ]; then 
    STRR='UPDATE `restart` SET `status` = 1 WHERE `id` ='$DBS' ' 
    DBS2="$(mysql -u $MyUSER -h $MyHOST -p$MyPASS proftpd -e '$STRR')" 
fi 

修復!謝謝。

修正版本:

if [ $DBS > 0 ]; then 
    DBS2="$(mysql -u $MyUSER -h $MyHOST -p$MyPASS proftpd -e 'UPDATE `restart` SET `status` = 1 WHERE `id` ='$DBS'')" 
fi 
+1

'if [$ DBS> 0]'應該是一個大於測試?如果是這樣,它需要'如果[$ DBS -gt 0]'或'if((DBS> 0))'。否則,它會創建一個名爲「0」的文件,並且可能始終爲真。另一方面,如果你想測試第一個查詢的出口值,它應該是'if [$? = 0]'測試成功或'如果[$? != 0]'來測試失敗。 – 2011-02-28 00:30:03

回答

0

你寫你的選擇查詢結果爲「DBS」但你使用$ DBS您若條件。也許這就是爲什麼第二個不會被執行。

有一點信息會很好。

+0

yes.thanks ..但如何向UPDATE查詢添加新值? – Pavel 2011-02-28 00:11:31

+0

哇。修正: if [$ DBS> 0];然後 DBS2 = 「$(MySQL的-u $ MYUSER -h $ MYHOST -p $爲mypass proftpd的-e 'UPDATE'restart' SET'status' = 1 WHERE'id' =' $ DBS '')」 音響 謝謝。 – Pavel 2011-02-28 00:13:58

0

if [$ DBS> 0];然後

DBS2 = 「$(MySQL的-u $ MYUSER -h $ MYHOST -p $爲mypass proftpd的-e 'UPDATE SET restartstatus = 1 WHERE id =' $ DBS '')」

音響