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 foo
parte 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 false
si el comando original falla.