Expect语言的卷曲括号"期待"命令?

时间:2014-10-13 19:44:35

标签: tcl expect

我是Expect / TCL的新手,只是想确认在下面的例子中,花括号在bash中作为单引号工作,以便对expect命令的主体进行分组?例如:

expect {
        -re "(P|p)assword: " { send "$pwd\r" }
        -re "Connection timed out" { puts "Timeout error"; exit 1 }
        -re "Connection closed" { puts "Host error"; exit 1 }
        timeout { puts "Timeout error"; exit 1 }
        eof { puts "Connection error"; exit 1 }
}

1 个答案:

答案 0 :(得分:1)

在标准Tcl中,这正是大括号的工作方式。 (好吧,很多命令实现然后立即使用引用的东西,但一切都像你期望的那样工作。)

但是,您正在查看expect命令的正文。外括号(在第一行和最后一行)是保证以这种方式工作的那些;其他人可以使用expect命令 - 在C中实现 - 按其选择进行解释。 documentation表示如果大括号的内容是多行的,它们被解释为(Tcl)列表,这使得它们的工作方式几乎与您的方式相同。重新开始。 (正如Tcl命令所说的那样,这非常奇怪,但是Expect已经用这种方式工作了几十年,因此它不会改变。)