为什么期望不能匹配`[0-9]`?

时间:2019-05-29 20:17:44

标签: expect

从以下脚本中,我们可以看到一个简单的数字不能与[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
    }
}

1 个答案:

答案 0 :(得分:1)

通常(在 cannonical pty模式下),每个发送给pty的\n都将转换为\r\n,因此您需要将\n更改为{{ 1}}。示例:

\r\n