2016-11-29 1 views
2

expectスクリプトの正規表現処理に少し戸惑っています。私の作成した実行ファイルは、Press [Enter] to continue:のようなテキストを含むいくつかのメッセージを送り返します。Enterの特別な意味:expect -re "続行するには、[Enter ]を押してください:"は動作しません。

spawn /tmp/install.run --prefix /opt --mode text 

expect { 
    timeout { send_user "\nFailure to initiate license view\n"; exit 1 } 
    eof { send_user "\nGeneral error\n"; exit 1 } 
    -re "Press \[Enter\] to continue:" { send "\r" } 
} 

ただし、スクリプトは戻ってくるテキストの認識を拒否します。この正規表現を使用する場合にのみ動作します:"Press .Enter\] to continue:"

expectスクリプトにはEnterというキーワードがありますか?

答えて

3

{}の代わりに""の引用符を使用していたため、文字列が正規表現エンジンに到達する前にバックスラッシュが処理されているため、バックスラッシュが含まれていない文字列が生成されます。つまり、\[Enter\]は文字クラス[Enter]として扱われています。正規表現のための

使用ブレース:

-re {Press \[Enter\] to continue:} { send "\r" } 
関連する問題