18 votos

el código de salida de la sustitución de comandos en bash local de asignación de variable

¿Cómo puedo comprobar el código de salida de una sustitución de comandos en bash si la asignación es una variable local de una función?
Por favor vea los siguientes ejemplos. La segunda es donde quiero ver el código de salida.
¿Alguien tiene un buen trabajo-alrededor o correcta solución para esto?

$ function testing { test="$(return 1)"; echo $?; }; testing
1
$ function testing { local test="$(return 1)"; echo $?; }; testing
0

20voto

Chriszuma Puntos 2770

Si usted mira el hombre archivo local (que en realidad es sólo el BASH builtins página man), es tratado como su propio comando, que le da un código de salida de 0 sobre el éxito de la creación de la variable local. Por lo local está sobrescribiendo el último ejecutado el código de error.

Intente esto:

function testing { local test; test="$(return 1)"; echo $?; }; testing

EDIT: me fui por delante y probado para usted, y funciona.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: