我是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 }
}
答案 0 :(得分:1)
在标准Tcl中,这正是大括号的工作方式。 (好吧,很多命令实现然后立即使用引用的东西,但一切都像你期望的那样工作。)
但是,您正在查看expect
命令的正文。外括号(在第一行和最后一行)是保证以这种方式工作的那些;其他人可以使用expect
命令 - 在C中实现 - 按其选择进行解释。 documentation表示如果大括号的内容是多行的,它们被解释为(Tcl)列表,这使得它们的工作方式几乎与您的方式相同。重新开始。 (正如Tcl命令所说的那样,这非常奇怪,但是Expect已经用这种方式工作了几十年,因此它不会改变。)