Gültigkeitsbereichsvariablen in ksh

Gültigkeitsbereichsvariablen in ksh

In ksh habe ich zwei Variablen mit demselben Namen, eine global, die andere ist lokal für eine Funktion.

#!/bin/ksh

LOG_FILE=lf

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

Wenn ich innerhalb der exec_script-Funktion auf die globale Variable $LOG_FILE verweisen möchte, wie muss ich sie qualifizieren, damit nicht auf die lokale Variable verwiesen wird?

Antwort1

Ich glaube nicht, dass das geht. Ich denke, es ist eine Einschränkung der Art und Weise, wie Ksh die Umgebung abfragt, wenn es nach dem Gültigkeitsbereich einer Variable sucht.

Ausschnitt ausGültigkeitsbereich von Variablen in KSH

Ksh hatdynamische Bereichsbestimmung, sodass die Variable auch in Funktionen zugänglich ist, die von der Funktion aufgerufen werden, die die Variable deklariert. Dies ist knapp dokumentiert in derAbschnitt über Funktionen im Handbuch. Beachten Sie, dass in AT&T ksh (im Gegensatz zu pdksh und Derivaten und den ähnlichen Funktionen von bash und zsh),

AuszugParameter: Ein Überblick

Wenn Sie eine Variable lesen oder festlegen, sucht zsh in der aktuellen Funktion, ob diese Variable existiert. Wenn nicht, sucht es in der nächsten äußersten Funktion und so weiter, bis es den globalen (äußersten) Gültigkeitsbereich erreicht. Wenn Sie also einer Variable einen Wert zuweisen, die nicht existiert, wird die Variable im äußersten Gültigkeitsbereich erstellt. (Das Exportieren eines neuen Parameters hat ebenfalls diesen Effekt.)

verwandte Informationen