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 に答える