Tcl Expect language中的花括号“;期望;指挥部?

Tcl Expect language中的花括号“;期望;指挥部?,tcl,expect,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"; ex

我对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 }
}

在标准Tcl中,大括号就是这样工作的。(好的,很多命令实现都会立即使用引用的东西,但一切都会像您预期的那样正常工作。)


但是,您看到的是
expect
命令的主体。外支架(在第一行和最后一行)是保证以这种方式工作的支架;其他的由
expect
命令(用C实现)来解释。声明说,如果大括号的内容是多行的,它们将被解释为(Tcl)列表,这使它们的工作方式与您所追求的几乎相同。(就像Tcl命令一样,这非常奇怪,但是Expect已经以这种方式工作了几十年,所以它不会改变。)

也许可以看看教程: