shell脚本中屏蔽人机交互

junmao813 2008-12-04 11:26:40
想写一个shell脚本自动备份 mysql数据库
备份的命令是 mysql -u root -p testdb > testdb.sql
需要手动输入密码
如果想把手动输入密码这一步跳过,请问该怎么做呢?

我的脚本是

#!/bin/bash
password=$1
echo $password | mysql -u root -p testdb.sql > testdb.sql

然后这样执行 ./backup.sh password
结果还是提示要求输入密码

请问谁知道该怎么做哦。谢谢了
...全文
138 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
c6j6z 2011-05-25
  • 打赏
  • 举报
回复
我和九楼兄弟一样目的,那个网页确实提供了一种方法,可是还是有局限性。忘一楼大牛能详细说明下那个方法怎么在脚本中使用,最好有个小例子!
lipei2005181023 2009-04-03
  • 打赏
  • 举报
回复
http://rdc.taobao.com/blog/qa/?p=100
到这个地址看看,人家介绍了屏蔽人机交互的方法
lcszndx 2009-03-14
  • 打赏
  • 举报
回复
楼主太小家子气了,好歹前面的几位也思考了问题,应该有所表示吧

我是找shell脚本交互的解决方案进入这个帖子的,对这个问题的看法:
6楼的方法是采用了别的方式绕开了脚本交互,只适合特别的命令
如果要自动脚本交互,目前找到的方法是使用expect,需要安装Tcl+expect,有没有轻量级通用的方法还在继续寻找
wlabing 2008-12-04
  • 打赏
  • 举报
回复
可以这样试试:
echo "$password < $filename\n" | mysql -usa -p
想自动备份直接用mysqldump不就得了,干嘛这样做.
junmao813 2008-12-04
  • 打赏
  • 举报
回复
2L、3L说的都不行哦
命令不能这样写的,-p后面必须加上数据库的名字
junmao813 2008-12-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 starshift 的回复:]
< <
xxxxx
< < EOF


好像是这样吧?
[/Quote]

你好,能说的具体点吗?
genghb 2008-12-04
  • 打赏
  • 举报
回复
mysql -u root -p $1 testdb.sql > testdb.sql 应该可以
fibbery 2008-12-04
  • 打赏
  • 举报
回复
估计这样就可以
mysql -u root -p $1 testdb.sql > testdb.sql
starshift 2008-12-04
  • 打赏
  • 举报
回复
<<
xxxxx
<< EOF


好像是这样吧?
junmao813 2008-12-04
  • 打赏
  • 举报
回复
搞定了,谢谢6楼的,
用的mysqldump
命令是 mysqldump -u root -ppassword testdb > /home/db_bak1203
原来-p后面直接可以加密码,不能加空格就是了

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧