+ -
当前位置:首页 → 问答吧 → 求助:用什么命令可以去掉多余的换行符?

求助:用什么命令可以去掉多余的换行符?

时间:2011-06-21

来源:互联网

我写了一个程序,用到了mysql数据库,在运行该程序前,需要启动mysqld服务,我想把这个启动过程自动化,具体来说就是写一个脚本程序,运行时检查系统内mysqld程序是否已经启动,如果已启动就直接调用我的程序就完了;如果没有启动,就启动mysqld服务,之后再运行我的程序,在用户退出我的程序后,脚本又关闭mysqld。脚本如下:
代码:
#!/bin/sh

#判断mysqld服务程序是否已经运行
res=$(ps aux | grep '/usr/sbin/mysqld' | wc -l)
#如果mysqld服务程序没有运行,则启动,否则不启动
if [ $res -gt 1 ]
then
   bstop=1
   sudo start mysql   #这么写对吗?好像没有起作用
else
   bstop=0
fi

echo $bstop
libmanager  #我写的图书管理程序

#若程序启动了mysqld服务程序,则在结束时将其关闭
if [ $bstop eq 1 ]
   sudo stop mysql
if
exit 0

脚本用"ps aux | grep '/usr/sbin/mysqld' | wc -l"来判断系统内是否有mysqld进程,若没有,该命令的结果为1,即只有1行结果,为:
代码:
XXX      28625  0.0  0.0   3596   748 pts/1    S+   19:16   0:00 grep --color=auto /usr/sbin/mysqld

这样的,若mysqld进程已经运行,该命令结果为2,
代码:
sudo /etc/init.d/mysql start
[sudo] password for XXX:
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mysql
mysql start/running, process 28698
XXX@XXX-freedom:~/bin$ ps aux | grep '/usr/sbin/mysqld'
mysql    28698  9.5  1.7 129168 17668 ?        Ssl  19:17   0:00 /usr/sbin/mysqld
XXX      28781  0.0  0.0   3596   744 pts/1    S+   19:17   0:00 grep --color=auto /usr/sbin/mysqld

但是运行脚本程序后结果如下:
代码:
./libmanager.sh
0
请输入用户名:XXX
连接MySQL数据库失败,失败代码:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
初始化数据库失败,请启动mysql服务器,方法: sudo /etc/init.d/mysql start
或输入正确的用户名及密码
[: 22: 0: unexpected operator

若在shell里手动运行"sudo start mysql"启动mysql服务,则顺利进入程序。
因此我想请教各位:在Shell脚本里如何启动mysql服务程序?谢谢!

最后由 zwdnet 编辑于 2011-06-21 19:41,总共编辑了 1 次

作者: zwdnet   发布时间: 2011-06-21

sorry,我发现哪错了,条件判断反了,倒过来就对了!

代码:
if [ $res -gt 1 ]
then
   bstop=0
else
   bstop=1
   sudo start mysql
fi

作者: zwdnet   发布时间: 2011-06-21

我写了一个程序,用到了mysql数据库,在运行该程序前,需要启动mysqld服务,我想把这个启动过程自动化,具体来说就是写一个脚本程序,运行时检查系统内mysqld程序是否已经启动,如果已启动就直接调用我的程序就完了;如果没有启动,就启动mysqld服务,之后再运行我的程序,在用户退出我的程序后,脚本又关闭mysqld。脚本如下:
代码:
#!/bin/sh

#判断mysqld服务程序是否已经运行
res=$(ps aux | grep '/usr/sbin/mysqld' | wc -l)
#如果mysqld服务程序没有运行,则启动,否则不启动
if [ $res -gt 1 ]
then
   bstop=1
   sudo start mysql   #这么写对吗?好像没有起作用
else
   bstop=0
fi

echo $bstop
libmanager  #我写的图书管理程序

#若程序启动了mysqld服务程序,则在结束时将其关闭
if [ $bstop eq 1 ]
   sudo stop mysql
if
exit 0

脚本用"ps aux | grep '/usr/sbin/mysqld' | wc -l"来判断系统内是否有mysqld进程,若没有,该命令的结果为1,即只有1行结果,为:
代码:
XXX      28625  0.0  0.0   3596   748 pts/1    S+   19:16   0:00 grep --color=auto /usr/sbin/mysqld

这样的,若mysqld进程已经运行,该命令结果为2,
代码:
sudo /etc/init.d/mysql start
[sudo] password for XXX:
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mysql
mysql start/running, process 28698
XXX@XXX-freedom:~/bin$ ps aux | grep '/usr/sbin/mysqld'
mysql    28698  9.5  1.7 129168 17668 ?        Ssl  19:17   0:00 /usr/sbin/mysqld
XXX      28781  0.0  0.0   3596   744 pts/1    S+   19:17   0:00 grep --color=auto /usr/sbin/mysqld

但是运行脚本程序后结果如下:
代码:
./libmanager.sh
0
请输入用户名:XXX
连接MySQL数据库失败,失败代码:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
初始化数据库失败,请启动mysql服务器,方法: sudo /etc/init.d/mysql start
或输入正确的用户名及密码
[: 22: 0: unexpected operator

若在shell里手动运行"sudo start mysql"启动mysql服务,则顺利进入程序。
因此我想请教各位:在Shell脚本里如何启动mysql服务程序?谢谢!

最后由 zwdnet 编辑于 2011-06-21 19:41,总共编辑了 1 次

作者: zwdnet   发布时间: 2011-06-21

sorry,我发现哪错了,条件判断反了,倒过来就对了!

代码:
if [ $res -gt 1 ]
then
   bstop=0
else
   bstop=1
   sudo start mysql
fi

作者: zwdnet   发布时间: 2011-06-21