LinuxSir.cn,穿越时空的Linuxsir!

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

expect脚本如何做到每次都能被正确执行

[复制链接]
发表于 2007-4-28 23:41:40 | 显示全部楼层 |阅读模式
比如下面这个脚本:

#!/usr/bin/expect

spawn grub
expect ">"
send "root (hd0,1)\r"
expect ">"
send "setup(hd0)\r"
expect ">"
send "quit\r"
expect eof
exit

有的时候就能被正确执行,有的时候就不行,而且我没看出来有什么规律,我倒是知道一个办法,就是在每次send之前执行exec sleep 1,但是这不是一个好方法,而且如果send多了话,用sleep显然会浪费很多时间,我想知道为什么会出现这种情况以及解决办法,请指教一下,谢谢

PS:不知道有没有替代grub的非交互的办法
 楼主| 发表于 2007-5-5 15:45:25 | 显示全部楼层
¡有Ÿ悉的吗?
回复 支持 反对

使用道具 举报

发表于 2007-5-5 16:53:48 | 显示全部楼层
不需要用 expect 来实现,在shell里面直接可以

grub <<EOF
root (hd0,1)
setup (hd0)
quit
EOF
回复 支持 反对

使用道具 举报

发表于 2007-5-5 16:56:39 | 显示全部楼层
如果一定要用expect,expect 有自己的sleep方式,而且可以精确到毫秒,一般情况下sleep 个 0.05秒就够了。

spawn grub

expect ">"
sleep .05
send "root (hd0,1)\r"

expect ">"
sleep .05
send "setup(hd0)\r"

expect ">"
sleep .05
send "quit\r"

expect eof
exit
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-5 18:04:56 | 显示全部楼层
谢谢啊,兄弟
回复 支持 反对

使用道具 举报

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

本版积分规则

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