2012-04-18 21 views
1

私のスクリプトでは、一致しない文字列を返したいと思います。 私はputs $expect_out(buffer)を試みたが、それはうまくいきませんでしたとエラー予期しない文字列を返す方法

can't read "expect_out(buffer)": no such variable 
    while executing 
"puts "out is $expect_out(buffer)" " 

マッチが発生するまでexpect_out配列が存在しないので、あなたが期待に一致していない場合は、コード

expect { 
    -nocase -re "$arg3" { exit 0 } 
    timeout { puts "Does not matched, output is $expect_out(buffer)" ; exit 2 }" 
} 
+0

コードとエラーメッセージがあまり一致しません。微妙なことが問題を起こさないように、物事を完全にコピーすることも同様です。 –

答えて

0

の下に私を与えました前にコードを呼び出して、実際にあなたのtimeout句に達すると、no such variableエラーが発生します。

パターン(またはEOFまたはfull_buffer)と一致すると」

マンページを期待、任意マッチング以前不一致出力は可変expect_out(バッファ)に保存されている。最大9つの正規表現の部分文字列マッチが保存されていますパターンの前に-indicesフラグを使用すると、10個の文字列の開始と終了のインデックス(lrangeに適した形式)が変数に格納されます(expect_out(1、string)〜expect_out expect_out(X、start)とexpect_out(X、end)ここで、Xは数字です。バッファ内の部分文字列の位置に対応します0はパターン全体にマッチした文字列を指し、globパターンとre gexpパターン。

info exists expect_outでテストし、配列キー/値(存在する場合)をarray names expect_outで印刷することができます。

set expect_out(key) valueで明示的に値を設定することはできますが、一致しない文字列を最初に取得する方法はありません。log_file expectoutput.txtを使用してバーを取得し、タイムアウトした場合はそれを再度読み込みます。

関連する問題