0

Expect スクリプトを機能させようとしていますが、(正規表現の解析を呼び出すために) -re フラグを使用すると、「timeout」キーワードが機能しなくなったようです。次のスクリプトを実行すると、「ステップ 1 でタイムアウトしました」というメッセージが表示され、次に「ステップ 2 を開始しています」というメッセージが表示され、その後タイムアウトしますが、「ステップ 2 でタイムアウトになりました」というメッセージが表示されず、新しいプロンプトが表示されます。

アイデア?

#!/usr/bin/expect --

spawn $env(SHELL)
match_max 100000

set timeout 2

send "echo This will print timed out\r"
expect  {
    timeout { puts "timed out at step 1"  }
    "foo " { puts "it said foo at step 1"}
}

puts "Starting test two\r"

send "echo This will not print timed out\r"
expect  -re {
    timeout { puts "timed out at step 2" ; exit }
    "foo " { puts "it said foo at step 2"}
}
4

2 に答える 2

2
Figured it out:

expect  {
    timeout { puts "timed out at step 2" ; exit }
    -re "foo " { puts "it said foo at step 2"}
}
于 2008-09-25T23:12:45.157 に答える
2

はい、質問に表示される「-re」フラグは、expect コマンドのすべてのパターンに適用されます。そのため、「タイムアウト」パターンは「-re タイムアウト」になり、特殊性が失われます。

于 2008-10-13T16:58:16.493 に答える