2013-07-12 20 views
8

ı üç istemleri olan bir test.sh için bekliyoruz senaryo yazmaya çalışıyorum diyelim.İsteğe bağlı istemlerde nasıl kullanılır? prompt1, prompt2, prompt3:

Benim kod şu şekildedir:

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

Ancak prompt2 sadece yarım kez oluşur. İstem 2 görünmezse, beklenen komut dosyası bozulur. Gösterilmiyorsa, istem 2 üzerinden atlayan kodun nasıl beklenir?

DÜZENLEME:

kodumu Sabit:

/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 

'

Bu şekilde, senaryonun geri kalanı yürütür ve çıkış sağlar.

+1

Sen 'Başka desen expect' gerekecektir döngünün patlak edebilmek için. Aksi halde asla 'etkileşim' satırına ulaşamazsınız. –

cevap

9

Sen bekleyebilirsiniz birden şeyler:

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

Ah dostum, bu görmedim ama bu benim düzeltme özdeş yakındır. – joshualan

+2

'prompt3' /' pass3' kod çoğaltmasından nasıl kaçınılır? – Abdull