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

Javier Fontan jfontan at fdi.ucm.es
Mon Aug 24 08:37:31 PDT 2009


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

-- 
Javier Fontan, Grid & Virtualization Technology Engineer/Researcher
DSA Research Group: http://dsa-research.org
Globus GridWay Metascheduler: http://www.GridWay.org
OpenNebula Virtual Infrastructure Engine: http://www.OpenNebula.org



More information about the Users mailing list