Ich möchte wissen, wie man den expect-Befehl im expect-Skript auf den exakten String wartet, bevor man zur nächsten Zeile im Skript übergeht.Wie erwarte ich einen Befehl im Expect-Programmskript, um auf den exakten String zu warten
Bourne-Shell (SH) Script:
#!/bin/sh
#!/usr/bin/expect
spawn ssh -Y [email protected]
expect -exact "[email protected]'s password: "
# replace password with ur own passwd
send "geomax45\r"
# replace the prompt with ur own prompt
expect "[email protected]:~$ "
# run application
send "./sample\r"
expect "*Menu*\r
1. print hello world\r
2. print Bye world\r
3. quit\r
enter choice: "
# enter choice 1
send "1\r"
expect "Bye world\r
*Menu*\r
1. print hello world\r
2. print Bye world\r
3. quit\r
enter choice: $"
# enter choice 2
send "2\r"
In dem obigen Code nach Eingabe des Codes 1 sollte für "Bye Welt \ r ......" wait Zeichenfolge auf dem Bildschirm auftreten, . Aber obwohl der Bildschirm eine andere Zeichenkette anfordert, führt der Code die nächste Zeile aus und gibt Option 2 ein, die nicht gemäß der Definition von expect auftreten sollte. Es sollte warten, bis die vollständige Zeichenfolge im Befehl expect übereinstimmt.
Ich möchte wissen, ob es einen strengeren Befehl gibt, der verwendet werden kann, so dass expect wartet, bis der exakte String-Matching erfolgt. Bitte helfen Sie mir in dieser Ausgabe
füge 'exp_internal 1' zu deinem Skript hinzu - das wird zeigen, dass du jetzt erwartest, dass die Übereinstimmung erreicht wird, und du wirst sehen können, warum das Match erfolgreich ist. –