任何人都可以看看并建议为什么以下代码段不执行if语句的分支?脚本不会抛出任何错误。它只是到达期望线并等待它超时。 arg1只是命令行中的一个参数。
set arg1 [lindex $argv 0]
set strname "teststring"
expect {
"prompt#" {
if { [string compare $arg1 $strname] != 0 } {
send "strings different\r"
} else {
send "strings same\r"
}
}
default abort
}
提前致谢。
编辑:
编辑以显示正确的结构。
答案 0 :(得分:4)
Expect是Tcl的扩展,Tcl非常particular about whitespace:
...
# need a space between the end of the condition and the beginning of the true block
if { [string compare $arg1 $strname] != 0 } {
...
# the else keyword needs to be on the same line as the closing bracket of the true block
} else {
...
}
答案 1 :(得分:0)
你的完整脚本是否更像这样?:
#!/usr/bin/expect -d
set arg1 [lindex $argv 0]
set strname teststring
expect {
"prompt#"
if { [string compare $arg1 $strname] != 0 }{
send "strings different\r";
}
else{
send "strings same\r";
}
default abort
}
或者你正在期待其他方式吗? 完全你是如何运行期望的,你的脚本,用什么args?