2011-02-28 37 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 '')”

音响