variable script from concatenar bash shell local

bash - script - ¿Por qué "local" barre el código de retorno de un comando?



in bash (2)

Este fragmento de Bash funciona como esperaba:

$ fun1() { x=$(false); echo "exit code: $?"; } $ fun1 exit code: 1

Pero este, usando local , no:

$ fun2() { local x=$(false); echo "exit code: $?"; } $ fun2 exit code: 0

¿Alguien puede explicar por qué el local barre el código de retorno del comando?


El código de retorno del comando local oscurece el código de retorno de false


La razón por la cual el código con retornos local 0 es porque $? "Se expande al estado de salida de la tubería de primer plano ejecutada más recientemente". Por lo tanto $? está regresando el éxito del local

Puede corregir este comportamiento separando la declaración de x de la inicialización de x como así:

$ fun() { local x; x=$(false); echo "exit code: $?"; }; fun exit code: 1