从以下脚本中,我们可以看到一个简单的数字不能与[0-9]匹配,但是在regexp文档中,它表示支持。为什么我的版本不起作用?
#!/bin/expect
set timeout 20
set remote_cmd_prompt_regex "> $"
spawn bash --noprofile --norc
send "PS1='> '\r"
expect {
-regexp "$remote_cmd_prompt_regex" {
puts "Host ->$expect_out(buffer)"
send "echo 99\r"
# match with .* works
expect -regexp ".*\\n(.+)\\n$remote_cmd_prompt_regex"
puts "regex group ->$expect_out(1,string)"
send "echo 89\r"
# match with [0-9] does not work why?
expect -regexp ".*\\n(\[0-9]+)\\n$remote_cmd_prompt_regex"
puts "regex group ->$expect_out(1,string)"
}
timeout {
puts "Timeout error!"
exit 1
}
}
答案 0 :(得分:1)
通常(在 cannonical pty模式下),每个发送给pty的\n
都将转换为\r\n
,因此您需要将\n
更改为{{ 1}}。示例:
\r\n