3

任何人都可以看看并建议为什么以下代码段不执行 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
}

提前致谢。

编辑:

编辑以显示正确的结构。

4

2 回答 2

5

Expect 是 Tcl 的扩展,Tcl对空格非常讲究

...
# 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 {
  ...
}
于 2012-09-07T01:22:48.937 回答
1

你的完整脚本更像这样吗?:

#!/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
}

还是您正在以其他方式运行?你究竟是如何运行期望的,你的脚本,使用什么参数?

于 2012-09-07T00:35:59.187 回答