2013-07-12 11 views
8

मान लें कि मैं एक test.sh के लिए एक अपेक्षित स्क्रिप्ट लिखने की कोशिश कर रहा हूं जिसमें तीन संकेत हैं: prompt1, prompt2, prompt3।वैकल्पिक संकेतों के साथ उम्मीद का उपयोग कैसे करें?

मेरे कोड इस तरह है:

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

हालांकि, prompt2 केवल आधा समय होता है। अगर प्रॉम्प्ट 2 दिखाई नहीं देता है, तो उम्मीद स्क्रिप्ट टूट जाती है। मैं उम्मीद कोड कैसे लिखूंगा जो प्रॉम्प्ट 2 पर छोड़ देता है अगर यह प्रदर्शित नहीं होता है?

संपादित करें:

मेरी कोड फिक्स्ड:

/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

संबंधित मुद्दे