LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 976|回复: 10

帮我看看怎么绕过在脚本中的exit呀?

[复制链接]
发表于 2005-6-6 18:03:54 | 显示全部楼层 |阅读模式
我要写一个在slackware下安装mysql的脚本
用下面的方法

  1. su mysql
  2. mysql_install_db
  3. exit
  4. chmod +x /etc/rc.d/rc.mysqld
  5. /etc/rc.d/rc.mysqld start
复制代码


但是写到shell里面后,因为exit就会退出了,后面的不执行。
而在shell里面,exit是返回root用户的。

不知道各位兄弟,有没有办法在shell里面先用mysql的用户运行mysql_install_db
然后再回返root用户执行其它的命令。
发表于 2005-6-6 18:09:34 | 显示全部楼层
try


  1. su -c 'mysql_install_db' mysql
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-6-6 18:10:03 | 显示全部楼层
用here doc

bash <<EOF
su mysql
mysql_install_db
exit
EOF
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-6 22:10:34 | 显示全部楼层
我经过测试上面的两种方法发现只有troll可以行的通。
kiron 的方法,到是很简单。但是这样生成出来的mysql库文件依然是属于root的。不能正常起动mysql
基本和用root 执行mysql_install_db一样。

我其实是在写一个自动安装虚拟主机管理的脚本。这下问题解决的差不多了。
等我全部弄好了,就发过来大家帮看看。

有时间大家也可以去我的小站看看
www.slack.cn
回复 支持 反对

使用道具 举报

发表于 2005-6-6 23:29:37 | 显示全部楼层
用root安装,chown成mysql 可行不?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-7 08:21:29 | 显示全部楼层
可以的。
但要用-R来修改
回复 支持 反对

使用道具 举报

发表于 2005-6-7 12:41:22 | 显示全部楼层
troll的方法用的是子shell,但子shell不是只用()就可以的吗?

  1. (su mysql; mysql_install_db)
复制代码

这样把exit都省掉。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-7 13:58:48 | 显示全部楼层
哦,我去试试。
crquan厉害呀
回复 支持 反对

使用道具 举报

发表于 2005-6-7 14:36:21 | 显示全部楼层
crquan, 我想你的方法是不行的,直接su mysql会进入一个交互shell,没有用户的应答,下一步是进行不下去的。kiron的方法按理是标准做法,babo你试验过不行吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-19 01:28:07 | 显示全部楼层
crquan的方法行不通,已经测试了。
kiron的方法也不行。我测试了一下,下面的代码

  1. #!/bin/sh
  2. su -c 'touch abc' mysql
复制代码

但是创建出来的文件依然属于root用户root组

只有troll的办法才可以
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表