ubuntuusers.de

Bash-Skript: Alle Variablen am Skriptanfang "deklarieren". Schlüsselwort dafür?

Status: Gelöst | Ubuntu-Version: Ubuntu 19.04 (Disco Dingo)
Antworten |

ui

Anmeldungsdatum:
22. November 2008

Beiträge: 603

Ich möchte in einem Skript alle verwendeten Variablen gleich zu Beginn deklarieren. Quasi als Inhaltsverzeichnis aller im Skript verwendeten Variablen. Auch leere Variablen. Letztere "deklariere" ich aktuell so:

1
2
#Variablendeklaration einer leeren Variable:
STATUS=

Ist das der einzige Weg oder gibt es ein Schlüsselwort um eine Variable in der Bash ohne Wert zu deklarieren.

Moderiert von Cruiz:

Dieses Thema ist verschoben worden. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“)!

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11269

Wohnort: München

Es gibt declare - interessant ist daran insbesondere die -r Option für Variablen, die zur Laufzeit des Skripts unveränderlich sein sollen.

Viel besser als ein Haufen globaler Variablen ist IMHO die Nutzung von lokalen Variablen in den Funktionen, in denen sie tatsächlich benötigt werden.

ui

(Themenstarter)

Anmeldungsdatum:
22. November 2008

Beiträge: 603

Super! Und die -r Option ist das Sahnehäubchen.

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

Da du dein Skript anscheinend halbwegs ordentlich schreiben möchtest, will ich zu der Antwort noch etwas beitragen, das du vielleicht auch noch nicht kennst.

In der Bash gibt es den Befehl

set -u 

Mit diesem Befehl lässt sich die Bash so steuern, dass ein Fehler auftritt und das Skript unterbrochen wird, sobald eine nicht gesetzte Variable benutzt wird, anstatt einfach nur mit "Nichts" weiterzumachen. Dadurch bist du gezwungen, alle Variablen vor ihrer Benutzung anzulegen. Wo das nun geschieht, ist allerdings auch wieder egal - nur vorher eben.

Wenn du eine Variable bewusst wieder so zurücksetzen willst, dass es wirkt, als hätte sie nie existiert, dann benötigst du

unset variable 

Ich hoffe, ich konnte etwas Neues beitragen, auch wenn es nicht direkt auf die Frage eingeht.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

seahawk1986 schrieb:

Viel besser als ein Haufen globaler Variablen ist IMHO die Nutzung von lokalen Variablen in den Funktionen, in denen sie tatsächlich benötigt werden.

Da stimme ich zu: man sollte den Scope der Variablen so klein wie möglich wählen um Fehler zu vermeiden. Es hilft auch nicht unbedingt der Übersichtlichkeit, alle Variablen am Anfang eines Skriptes zu deklarieren. (Nebenbei ist das auch eine Schwäche des ursprünglichen C, die man in C++ abgeschafft hat, dass alle Variablen am Anfang einer Funktion deklariert werden müssen, auch wenn sie z.B. nur in einem Schleifenrumpf benötigt werden.)

Antworten |