Linux 如何使用带有可选提示的expect?
假设我正在尝试为test.sh编写一个expect脚本,它有三个提示:prompt1、prompt2、prompt3 我的代码如下:Linux 如何使用带有可选提示的expect?,linux,bash,expect,Linux,Bash,Expect,假设我正在尝试为test.sh编写一个expect脚本,它有三个提示:prompt1、prompt2、prompt3 我的代码如下: spawn test.sh 期待“及时1” 发送“pass1” 期待“及时2” 发送“pass2” 期待“及时3” 发送“pass3” 然而,prompt2只出现一半的时间。如果prompt2没有出现,expect脚本将中断。如果prompt2没有出现,我将如何编写跳过它的expect代码 编辑: 修正了我的代码: /usr/bin/expect-c' spaw
spawn test.sh
期待“及时1”
发送“pass1”
期待“及时2”
发送“pass2”
期待“及时3”
发送“pass3”
然而,prompt2只出现一半的时间。如果prompt2没有出现,expect脚本将中断。如果prompt2没有出现,我将如何编写跳过它的expect代码
编辑:
修正了我的代码:
/usr/bin/expect-c'
spawn./test.sh
期待{
“提示1”{
发送“pass1\r”
exp\u继续
}
“提示2”{
发送“pass2\r”
exp\u继续
}
“提示3”{
发送“pass3\r”
exp\u继续
}
}
互动回报
'
通过这种方式,脚本的其余部分将执行并提供输出。您可以预期多种情况:
expect {
"prompt2" {
send "pass2"
expect "prompt3"
send "pass3"
}
"prompt3" {
send "pass3"
}
}
只要您有一个案例总是被期望命中,并且在这种情况下不包含
exp\u continue
,您就可以轻松删除重复并处理可选提示:
expect "prompt1"
send "pass1"
expect {
"prompt2" {
send "pass2"
exp_continue
}
"prompt3" {
send "pass3"
}
}
哦,老兄,我没看到这一点,但这与我的修复几乎相同。如何避免
prompt3
/pass3
代码重复?你需要期望另一种模式能够打破循环。否则,你将永远无法进入交互
行。我已经对公认的答案进行了投票,但这个答案要优雅得多(不要重复你自己)exp\u continue
可以很好地解决可选的提示问题。这个问题很好。