Cómo devolver generado código de salida del proceso en Espera de secuencia de comandos?

Yo uso esperar para la ejecución de secuencias de comandos de prueba.
Las pruebas de retorno del éxito o el fracaso a través de código de salida. Pero espera que el retorno equivalente código de salida.
Cómo hacer que esperar el retorno adecuado estado de salida?

Mis pruebas son secuencias de comandos sql ejecutar con psql (postgresql procesador de comandos).
Desde psql no permite especificar la contraseña de base de datos como un parámetro de línea de comandos, esperar scripts hacer eso.

Por lo tanto, mi espera script parece:

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
}
InformationsquelleAutor seas | 2010-07-21

1 Kommentar

  1. 31

    Ya estás esperando el eof al final de su bucle, usted sólo tiene que utilizar 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]

    Sale con 1.

    • Hmm.. [21:43:30] ~> expect <<< "spawn true; expect eof; catch wait result; exit [lindex $result 3]"; echo $? salidas 3 para mí
    • Si el tipo es igual que $resultado se interpreta por la shell en lugar de esperar. Poner la entrada en comillas simples, o escapar de la $.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea