[one-users] exec_and_log doesn't propagate exit status

Sander Klous sander at nikhef.nl
Mon Aug 24 13:28:05 PDT 2009


Hi Javier,
Can you include this change upstream?
Or does it violate one of your programming conventions?
Thanks,
Sander

Javier Fontan schreef:
> Hello,
>
> On Mon, Aug 24, 2009 at 4:59 PM, Sander Klous<sander at nikhef.nl> wrote:
>   
>> Hi,
>> I think exec_and_log doesn't propagate the exit status of the command it
>> executes. Is that true?
>> So, if I do:
>>
>> exec_and_log "ls bla"
>> echo $?
>>
>> I would like to see the exit status of `ls bla`.
>> At the moment, I think it just returns -1 on failure.
>> Is that right?
>>     
>
> You are right, when the command fails it always returns -1 (from tm_common.sh):
>
> --8<------
> # Executes a command, if it fails return error message and exits
> function exec_and_log
> {
>     output=`$1 2>&1 1>/dev/null`
>     if [ "x$?" != "x0" ]; then
>         log_error "Command \"$1\" failed."
>         log_error "$output"
>         error_message "$output"
>         exit -1
>     fi
>     log "Executed \"$1\"."
> }
> ------>8--
>
> I think you can modify it to return the command exit code this way:
>
> --8<------
> # Executes a command, if it fails return error message and exits
> function exec_and_log
> {
>     output=`$1 2>&1 1>/dev/null`
>     code=$?
>     if [ "x$code" != "x0" ]; then
>         log_error "Command \"$1\" failed."
>         log_error "$output"
>         error_message "$output"
>         exit $code
>     fi
>     log "Executed \"$1\"."
> }
> ------>8--
>
> Bye
>
>   



More information about the Users mailing list