No ksh, tenho duas variáveis com o mesmo nome, uma global e outra local para uma função
#!/bin/ksh
LOG_FILE=lf
function exec_script
{
local LOG_FILE=f
print $LOG_FILE
}
exec_script
print $LOG_FILE
Se eu quiser referir a variável global $LOG_FILE dentro da função exec_script, como devo qualificá-la para que o local não seja referenciado?
Responder1
Eu não acho que você possa. Acho que é uma limitação de como o Ksh interroga o ambiente ao procurar o escopo de uma variável.
trecho deEscopo das variáveis no KSH
Ksh temescopo dinâmico, portanto a variável também pode ser acessada em funções invocadas pela função que declara a variável. Isto está documentado sucintamente noseção sobre funções no manual. Observe que no AT&T ksh (em oposição ao pdksh e derivados, e aos recursos semelhantes do bash e zsh),
excertoParâmetros: uma visão geral
Quando você lê ou define uma variável, zsh procura na função atual para ver se essa variável existe. Caso contrário, ele procura na próxima função mais externa e assim por diante, até atingir o escopo global (mais externo). Portanto, se você atribuir um valor a uma variável que não existe, a variável será criada no escopo mais externo. (Exportar um novo parâmetro também tem esse efeito.)