Variables de alcance en ksh

Variables de alcance en ksh

En ksh, tengo dos variables con el mismo nombre, una global y otra local para una función.

#!/bin/ksh

LOG_FILE=lf

function exec_script
{
   local LOG_FILE=f
   print $LOG_FILE
}
exec_script
print $LOG_FILE

Si quiero hacer referencia a la variable global $LOG_FILE dentro de la función exec_script, ¿cómo debo calificarla para que no se haga referencia a la local?

Respuesta1

No creo que puedas. Creo que es una limitación de cómo Ksh interroga al entorno cuando busca el alcance de una variable.

extracto deAlcance de las variables en KSH

ksh tienealcance dinámico, por lo que la variable también es accesible en funciones que son invocadas por la función que declara la variable. Esto está brevemente documentado en elsección sobre funciones en el manual. Tenga en cuenta que en AT&T ksh (a diferencia de pdksh y derivados, y las características similares de bash y zsh),

extractoParámetros: descripción general

Cuando lees o configuras una variable, zsh busca en la función actual para ver si esa variable existe. De lo contrario, busca en la siguiente función más externa, y así sucesivamente, hasta que alcanza el alcance global (más externo). Por lo tanto, si asigna un valor a una variable que no existe, la variable se crea en el ámbito más externo. (Exportar un nuevo parámetro también tiene este efecto).

información relacionada