2013-07-12 18 views
8

假設我正在爲一個test.sh編寫一個期望腳本,該腳本有三個提示:prompt1,prompt2,prompt3。如何使用期望與可選的提示?

我的代碼是這樣的:

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

然而,PROMPT2只出現一半的時間。如果prompt2不顯示,則期望腳本會中斷。如果期望代碼跳過prompt2,我將如何編寫它,如果它不顯示?

編輯:

修正我的代碼:

/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'另一種模式,能夠打出來的循環。否則,你將永遠無法進入「互動」行。 –

回答

9

你可以期待許多內容:

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

哦,男人,沒有看到這個,但這與我的修復幾乎相同。 – joshualan

+2

如何避免'prompt3' /'pass3'代碼重複? – Abdull