web-dev-qa-db-ja.com

生成されたプロセス終了コードをExpectスクリプトで返す方法は?

テストスクリプトの実行にはexpectを使用します。テストは、終了コードを介して成功/失敗を返します。ただし、同等の終了コードが返されることを期待してください。期待値が適切な終了ステータスを返すようにするにはどうすればよいですか?

私のテストは、psql(postgresqlコマンドプロセッサ)で実行されるSQLスクリプトです。 psqlではデータベースパスワードをコマンドラインパラメータとして指定できないため、スクリプトを期待そうします。

したがって、私の期待スクリプトは次のようになります。

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
}
22
seas

ループの最後ですでにeofを待っています。結果は、waitcatchを使用するだけです。

spawn true
expect eof
catch wait result
exit [lindex $result 3]

0で終了します。

spawn false
expect eof
catch wait result
exit [lindex $result 3]

1で終了します。

31
Douglas Leeder