期望:使用变量作为期望字符串

时间:2015-12-28 17:50:06

标签: tcl expect

让我说我有类似......

set timeout 10
expect {
    "login:"    {
        send "$USER\r"
        exp_continue
    }
    "assword:"  {
        send "$PASSWORD\r"
        exp_continue
    }
    $PROMPT {
        send_user "Successfully logged in."
    }
}

我在定义$ PROMPT

时遇到问题

所有这些都给出了错误......

set PROMPT   {-re ">|:"}
set PROMPT   "-re \">|:\""
set PROMPT   {-regexp ">|:"}

我得到的错误就像......

bad flag "-regexp ":|>"": must be -glob, -regexp, -exact, -notransfer, -nocase, -i, -indices, -iread, -timestamp, -timeout, -nobrace, or --

分配变量的正确方法是什么?(更重要的是)我为此错误发生的违反概念是什么?

提前感谢你!

1 个答案:

答案 0 :(得分:1)

你应该这样写:

set PROMPT {>|:}
expect {
  -re $PROMPT { ... }
  ...
}

为了更安全,您最好定义更精确的PROMPT,因为某些命令也可能会输出>:等字符。