Es hat keinen Vorteil, einer Variablen eine leere Zeichenfolge zuzuweisen und ihr dann sofort eine andere Variablenzeichenfolge zuzuweisen. Durch die Zuweisung eines Werts zu einer Shell-Variablen wird der vorherige Wert vollständig überschrieben.
Meines Wissens gibt es keine Empfehlung, die besagt, dass Sie Variablen explizit auf leere Zeichenfolgen initialisieren sollten. In der Tat kann dies unter bestimmten Umständen Fehler maskieren (Fehler, die ansonsten bei Ausführung unter auftreten würden set -u
, siehe unten).
Eine nicht gesetzte Variable, die seit dem Start eines Skripts nicht mehr verwendet oder durch Ausführen des unset
Befehls explizit deaktiviert wurde , hat keinen Wert. Der Wert einer solchen Variablen ist nichts. Bei Verwendung als erhalten "$myvariable"
Sie das Äquivalent von ""
.
Wenn die Shell-Option nounset
mit entweder set -o nounset
oder festgelegt ist set -u
, führt das Verweisen auf eine nicht gesetzte Variable dazu, dass die Shell einen Fehler erzeugt (und eine nicht interaktive Shell beendet wird):
$ set -u
$ echo "$myvariable"
/bin/sh: myvariable: parameter not set
oder in bash
:
$ set -u
$ echo "$myvariable"
bash: myvariable: unbound variable
Shell-Variablen werden von der Umgebung initialisiert, wenn der Name der Variablen einer vorhandenen Umgebungsvariablen entspricht.
Wenn Sie erwarten, dass Sie eine Variable verwenden, die möglicherweise von der Umgebung auf diese Weise initialisiert wird (und wenn dies unerwünscht ist), können Sie sie vor dem Hauptteil Ihres Skripts explizit deaktivieren:
unset myvariable # unset so that it doesn't inherit a value from the environment
Dadurch wird es auch als Umgebungsvariable entfernt, oder Sie können den Anfangswert einfach ignorieren und es einfach mit einer Zuweisung überschreiben (wodurch sich auch der Wert der Umgebungsvariablen ändert).
In einer Shell-Variablen würden Sie niemals auf nicht initialisierten Müll stoßen (es sei denn, wie angegeben, dieser Müll war bereits in einer Umgebungsvariablen mit demselben Namen vorhanden).