2012-04-30 17 views
5

Cuando intento ejecutar la siguiente secuencia de comandos de esperar, simplemente finaliza la ejecución en lugar de esperar la entrada del usuario. ¿Podría alguien decirme qué estoy haciendo mal?no espera la entrada del usuario en la secuencia de comandos expect

#!/usr/bin/expect 
puts -nonewline stdout "Enter device id:" 
flush stdout 
gets stdin id 
puts -nonewline stdout "Enter device name:" 
flush stdout 
gets stdin name 

Respuesta

6

esperar altera el comando Tcl gets de modo que no espera a la entrada estándar; para leer una línea a la espera de que, lo que necesita hacer esto en vez de gets stdin id:

# Read input to stdin 
expect_user -re "(.*)\n" 
set id $expect_out(1,string) 
+1

Notas: He encontrado la manera de obtener la entrada del usuario en la documentación esperar y confirmé que Expect cambia el comportamiento de bloqueo de 'gets stdin' mediante pruebas. Estaba muy sorprendido por ese cambio. –

0

probar este código:

expect "\\$" 
puts -nonewline "please enter a swithch user: " 
flush stdout 
set userName [gets stdin] 
puts $userName 
expect "\\$" ;# without this line, the script would exit too fast 
      ;# for the "echo hello" to be sent to stdout by bash 
      ;# and thus wont be recorded 
Cuestiones relacionadas