Verständnis des Variablenbereichs (Variable Scope)
In Shell-Skripten sind Variablen standardmäßig global. Das bedeutet, dass sie von überall im Skript aus zugänglich sind. Allerdings können Sie das Schlüsselwort local
verwenden, um Variablen zu erstellen, die nur innerhalb einer Funktion zugänglich sind. Dies wird als lokaler Bereich (local scope) bezeichnet.
Lassen Sie uns unsere functions.sh
-Datei ändern, um dieses Konzept zu demonstrieren.
Aktualisieren Sie den Inhalt mit folgendem Code:
#!/bin/bash
## Globale Variable
GLOBAL_VAR="I'm global"
## Funktion mit einer lokalen Variable
demonstrate_scope() {
local LOCAL_VAR="I'm local"
echo "Inside function: GLOBAL_VAR = $GLOBAL_VAR"
echo "Inside function: LOCAL_VAR = $LOCAL_VAR"
}
## Die Funktion aufrufen
demonstrate_scope
echo "Outside function: GLOBAL_VAR = $GLOBAL_VAR"
echo "Outside function: LOCAL_VAR = $LOCAL_VAR"
Hier ist, was in diesem Skript passiert:
- Wir definieren eine globale Variable
GLOBAL_VAR
.
- Innerhalb der
demonstrate_scope
-Funktion definieren wir eine lokale Variable LOCAL_VAR
mit dem Schlüsselwort local
.
- Wir geben beide Variablen innerhalb der Funktion aus.
- Nach dem Aufruf der Funktion versuchen wir, beide Variablen erneut außerhalb der Funktion auszugeben.
Speichern Sie die Datei und führen Sie sie aus:
./functions.sh
Sie sollten eine Ausgabe ähnlich dieser sehen:
Inside function: GLOBAL_VAR = I'm global
Inside function: LOCAL_VAR = I'm local
Outside function: GLOBAL_VAR = I'm global
Outside function: LOCAL_VAR =
Beachten Sie, dass LOCAL_VAR
leer ist, wenn sie außerhalb der Funktion zugegriffen wird. Dies liegt daran, dass lokale Variablen nur innerhalb der Funktion zugänglich sind, in der sie definiert werden.