【发布时间】:2012-04-21 17:35:51
【问题描述】:
我想知道如何让 expect 脚本中的 expect 命令等待精确的字符串匹配,然后再继续脚本中的下一行。
Bourne shell (sh) 脚本:
#!/bin/sh
#!/usr/bin/expect
spawn ssh -Y localuser@lbblr-tirumala
expect -exact "localuser@lbblr-tirumala's password: "
# replace password with ur own passwd
send "geomax45\r"
# replace the prompt with ur own prompt
expect "localuser@lbblr-tirumala:~$ "
# run application
send "./sample\r"
expect "*Menu*\r
1. print hello world\r
2. print Bye world\r
3. quit\r
enter choice: "
# enter choice 1
send "1\r"
expect "Bye world\r
*Menu*\r
1. print hello world\r
2. print Bye world\r
3. quit\r
enter choice: $"
# enter choice 2
send "2\r"
在上面的代码中输入 1 后代码应该等待“Bye world\r......”字符串出现在屏幕上。但是即使屏幕提示完全不同的字符串,代码正在执行下一行并输入选项 2,根据期望的定义,这不应该发生。它应该等到期望命令中的完整字符串匹配。
我想知道是否有任何更严格的命令可以使用,以便期望等待直到发生精确的字符串匹配。请帮我解决这个问题
【问题讨论】:
-
将
exp_internal 1添加到您的脚本中——这将详细显示您现在期望正在尝试匹配,并且您将能够看到匹配成功的原因。
标签: shell unix scripting sh expect