I use expect for running test scripts. Tests return success/failure through exit code. But expect return equivalent exit code. How to make expect return proper exit status?
My tests are sql scripts run with psql (postgresql command processor). Since psql doesn't allow to specify database password as a command line parameter, expect scripts do that.
So, my expect script looks like:
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 }
You're already waiting for the eof
at the end of your loop, you just need to use wait
and catch
the result:
spawn true expect eof catch wait result exit [lindex $result 3]
Exits with 0.
spawn false expect eof catch wait result exit [lindex $result 3]
Exits with 1.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With