linux - example - spawn no se encontró la orden
¿Cómo devolver el código de salida del proceso generado en la secuencia de comandos Expect? (1)
Ya estás esperando el eof
al final de tu ciclo, solo necesitas usar wait
y catch
el resultado:
spawn true
expect eof
catch wait result
exit [lindex $result 3]
Sale con 0.
spawn false
expect eof
catch wait result
exit [lindex $result 3]
Salidas con 1.
Yo uso esperar para ejecutar scripts de prueba. Las pruebas devuelven el éxito / fracaso a través del código de salida. Pero espera volver código de salida equivalente. ¿Cómo hacer esperar un estado de salida adecuado?
Mis pruebas son scripts SQL ejecutados con psql (procesador de comandos postgresql). Dado que psql no permite especificar la contraseña de la base de datos como un parámetro de la línea de comandos, espere que los scripts lo hagan.
Por lo tanto, mi guión de espera se parece a:
spawn $SPAWN_CMD
expect {
-re "Enter password for new role:" {
send "$PWPROMPT/n"
exp_continue
} -re "Enter it again:" {
send "$PWPROMPT/n"
exp_continue
} -re "Password(.*)" {
send "$PASSWORD/n"
exp_continue
} -re "Password(.*):" {
send "$PASSWORD/n"
exp_continue
} eof
}