求一个linux下的shell脚本执行mysql的sql语句,但老是 不成功....大神帮忙啊...

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一个linux下的shell脚本执行mysql的sql语句,但老是 不成功....大神帮忙啊...相关的知识,希望对你有一定的参考价值。

想通过shell根据查询条件删除部分数据...请大指定下...前面查询没问题..可就是进行for循环时没执行...执行脚本的时候又没报错...真心搞不懂了...
脚本如下:
sqlx="/opt/mysql3307/bin/mysql test -e 'delete from test.text where id >3;'"
sqlw="select id from test.text where id>3;"
sqltool="/opt/mysql3307/bin/mysql test"

echo "$sqlw" | $sqltool >testsss.log
a= awk 'NR==2print $1' testsss.log
#echo $a
#echo $sqlw
for num in $a
do
if [ "$num" -gt "3" ]

then
#echo "$sqlx" | $sqltool > test232.log
#$sqltool -e 'update test.text set times = now();'

/opt/mysql3307/bin/mysql test <<EOF
delete from test.text where id >3;
commit;
EOF
fi
done

简单的看了一下
第一,第六行a= awk 'NR==2print $1' testsss.log 这里是否没有加``,另外shell下赋值在等号两侧是不允许有空格的,这个不知道是不是你贴在里面显示的错误
第二,$sqlw取出来的应该就已经是id>3的了,那么你在for循环里的判断if [ "$num" -gt "3" ]应该进不去,所以循环里是不会走到if里去的,你可以在if外面打印一下$num的值看看。
参考技术A

    delete后边没内容啊,你要删除什么?

    你设置的单纯的if,如果else呢?还是你已经考虑到不存在else问题?

    确认一下吧

    别的没看出来什么问题

linux上写了脚本,不能执行!求解答!

错误提示:-bash: ./killmountrestart.sh: /bin/bash: bad interpreter: Operation not permitted
/killmountrestart.sh是脚本名字。
内容如下:
#!/bin/bash

/opt/IBM/HTTPServer/bin/apachectl stop
sleep 5
pkill -9 http
sleep 5
pkill -9 java
sleep 5
umount /opt/community/cache/
sleep 5
mount -t nfs 192.168.151.201:/opt/community/cache /opt/community/cache/
sleep 5
/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startServer.sh server1
sleep 20
/opt/IBM/HTTPServer/bin/apachectl start
root账户下编写,所有用户有权限:
[root@lt1-btvwz-spaceweb4 flv]# ll
total 200
drwxrwxrwx 9 weblogic weblogic 4096 Jan 25 2010 flv_images
-rwxrwxrwx 1 weblogic weblogic 345 Aug 18 14:44 killmountrestart.sh
-rwxrwxrwx 1 weblogic weblogic 670 Jun 1 09:08 killrestart
drwxrwxrwx 2 weblogic weblogic 131072 Dec 22 2010 tempflv
drwxrwxrwx 2 weblogic weblogic 36864 Dec 22 2010 tempvideo
可是还是那个提示。

你的脚本是在普通用户下编写、设置权限的?
/opt下的东西都需要root权限才能修改、mount也需要root权限。
如果不是必须运行在非root用户下的话,建议试试用root账户执行。
参考技术A ./killmountrestart.sh: /bin/bash: bad interpreter: Operation not permitted

从这句来看,是 /bin/bash 不允许执行。把下面三条命令的打印结果贴上来,我再看看原因。
id
echo $SHELL
ls -l /bin/bash

另外,试一下用
bash killmoutrestart.sh
的方法来执行看看。追问

贴出来了,大虾帮忙看一下。

本回答被提问者采纳
参考技术B 你在超级用户下,用 chmod 755 killmountrestart.sh 后,在运行该 bash 脚本试一试。追问

有权限,但是还是那个报错。

追答

你再仔细检查一下你的SHELL操作!像你SHELL文件中的:apachectl、pkill、umount、mount之间的顺序是否正确?

另外,你再检查另一个SHELL脚本程序:startServer.sh ,估计你的这个文件中会有问题。

你将该目录下的所有文件和子目录的属主和组都改成 root、root 试试看。

参考技术C 先提权 chmod 命令追问

有权限,但是还是那个报错。

参考技术D 你还没有修改权限,chmod 777 killmountrestart.sh
再运行应该就可以了追问

有权限,但是还是那个报错。

追答

那可能是你的系统没有带这个SHELL吧,#!/bin/ash或者sh试试!

以上是关于求一个linux下的shell脚本执行mysql的sql语句,但老是 不成功....大神帮忙啊...的主要内容,如果未能解决你的问题,请参考以下文章

求高手编写Shell脚本,实现调用Linux下的SQLITE,导入CSV文件的功能

转 MySQL shell脚本执行错误 $' ':command not found

如何在Windows实现远程调用Linux下的shell指令

求大神告知 linux系统下,JAVA如何操作mysql备份和还原。求源代码~~~~测试通过的加分。

linux上写了脚本,不能执行!求解答!

linux下的set、export和env命令,在设置shell的变量时作用一样吗?