Pasar el código de estado de salida después de usar ||

Pasar el código de estado de salida después de usar ||

Quiero escribir un alias que sea algo como:

alias baz="false || echo bar"

(En realidad no lo es false, es un comando que puede fallar). Sin embargo, quiero pasar el código de estado fallido al siguiente invocador. En otras palabras, este es el comportamiento actual:

$ false; echo $?
1
$ false || echo foo; echo $?
0

Quiero hacer una operación diferente que tenga el mismo comportamiento en todos los aspectos false || echo foo, excepto que cuando lo haga echo $?volvería 1.

Nota:Espero que la echo fooparte esencialmente siempre tenga éxito.

Respuesta1

Una función para guardar el valor de retorno de un comando no es tan complicada:

f() {
    some-command-that-can-fail
    retval=$?
    if [ "$retval" != 0 ] ; then
         echo the command failed
    fi
    return $retval
}

Si no le importa el valor de retorno exacto, pero solo desea un código de retorno distinto de cero, esto funcionaría:

somecmd || ( echo it failed ; false )

Necesita el subshell (o un bloque compuesto) para ejecutar el final solo falsesi el comando original falla.

información relacionada