2013-07-12 5 views
8

私は3つのプロンプト、prompt1、prompt2、prompt3を持つtest.shのexpectスクリプトを書こうとしています。オプションのプロンプトでexpectを使用するには?

spawn test.sh 
expect "prompt1" 
send "pass1" 
expect "prompt2" 
send "pass2" 
expect "prompt3" 
send "pass3" 

しかし、PROMPT2は半分しか時間が発生します。

私のコードは次のようです。 prompt2が表示されない場合は、expectスクリプトが壊れます。それが表示されない場合、prompt2をスキップするexpectコードをどのように記述しますか?

EDIT:

は私のコードを修正:

/usr/bin/expect -c ' 
spawn ./test.sh 
expect { 
     "prompt1" { 
      send "pass1\r" 
      exp_continue 
     } 
     "prompt2" { 
      send "pass2\r" 
      exp_continue 
     } 
     "prompt3" { 
      send "pass3\r" 
      exp_continue 
     } 
} 
interact return 

この方法は、スクリプトの残りの部分は実行し、出力を提供します。

+1

あなたは 'ループから抜け出すことができるようにするため、別のパターンをexpect'する必要がありますが。さもなければ、 'interact'行には決して行きません。 –

答えて

9

あなたは複数のものを期待することができます

expect { 
    "prompt2" { 
     send "pass2" 
     expect "prompt3" 
     send "pass3" 
    } 
    "prompt3" { 
     send "pass3" 
    } 
} 
+0

オハイオ州の男は、これを見ていないが、これは私の修正とほぼ同じです。 – joshualan

+2

'prompt3' /' pass3'コードの重複を避けるには? – Abdull