expect 循环匹配
时间: 2023-06-30 17:21:40 浏览: 297
在expect中,可以使用循环语句来匹配多个可能的输出,以便进行不同的操作。expect支持for循环和while循环两种方式。
1. for循环:对于固定次数的循环,可以使用for循环,例如:
```
for {set i 0} {$i < 3} {incr i} {
expect {
"password:" {
send "mypassword\r"
}
"login failed" {
exit 1
}
timeout {
exit 1
}
}
}
```
上述代码表示循环3次,每次匹配"password:"、"login failed"或timeout。如果匹配到"password:",则发送密码;如果匹配到"login failed"或timeout,则退出脚本。
2. while循环:对于未知次数的循环,可以使用while循环,例如:
```
set i 0
while {$i < 3} {
expect {
"password:" {
send "mypassword\r"
}
"login failed" {
exit 1
}
timeout {
exit 1
}
}
incr i
}
```
上述代码表示循环直到匹配到"password:"、"login failed"或timeout三者之一。每次循环时,匹配输出并进行相应操作。当匹配到"password:"时,发送密码;当匹配到"login failed"或timeout时,退出脚本。