bash Variablen Tutorial Teil 10

Variablen haben wir schon benutzt. Sei es als Environment Variablen oder in einem Script. Die bash Variablen wollen wir hier etwas genauer untersuchen.

1Einführung
2Der bash Prompt
3key bindings
4Der Startvorgang
5Environment Variablen
6builtin commands
7Arbeiten mit Dateien
8nano
9bash Scripting
10Variablen
11Verzweigungen (if)
12Schleifen
13Kommandozeilenparameter
14exit Codes bash Tutorial Teil 14
15von der Idee zum Script
16grep
17Piping und Redirection
18tee

bash Variablen

In der bash haben Variablen einen Namen und einen Inhalt. Im Gegensatz zu Programmiersprachen wie Java oder Pascal haben sie keinen expliziten Typ.

In deinem Script kannst du in einer Variable Werte speichern, die im späteren Programmablauf wieder verwendet werden.

Variablen erzeugen

Eine Variable wird angelegt, in dem du ihr unter ihrem Namen einen Wert zu weist.

text="Inhalt" legt eine Variable mit dem Namen text an und weist ihr den Inhalt "Inhalt" zu. Der Interpreter legt die Variable automatisch mit dem Datentyp String an.

Variablenzugriff

Um den Inhalt einer Variable abzurufen, musst du ein $ Zeichen vor den Variablennamen schreiben. Dadurch unterscheidet der Interpreter Variablennamen von anderen Schlüsselworten des Scripts.

Du kannst zum einen $text oder ${text} schreiben. Die geschweiften Klammern sind optional und sind nur notwendig, wenn die Variable an anderen Text angrenzt. Ich habe mir irgendwann angewöhnt, die Klammern immer zu schreiben.

Wir schreiben jetzt das Script simplevar.sh

text="Inhalt"

echo "text=${text}"

Dieses Script definiert einfach nur die Variable text und gibt sie danach mit echo aus. Starte es mit source simplevar.sh aus und gibst danach gibst du am Prompt echo ${text} ein. Du siehst, nach Ende des Scripts bleibt die Variable erhalten.

Lauf von simplevar.sh - die bash Variable ist auch noch nach Programmende vorhanden.
Olli Graf - raspithek.de
simplevarCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Lauf von simplevar.sh – die bash Variable ist auch noch nach Programmende vorhanden.

Variable löschen

Um eine Variable zum Ende des Scripts zu löschen, benutzt du das unset Kommando. Ich kopiere simplevar.sh nach unset.sh und ergänze am Ende den unset Aufruf. Auch dieses Script rufen wir auf mit source unset.sh

text="Inhalt"

echo "text=${text}"
unset text

Du siehst, bei unset gibst du nur den Variablennamen an.

Wenn du viele Variablen in einem Script verwendest, ist dieses Verfahren natürlich nicht praktikabel, weil source dein Script innerhalb deiner Login-Shell startet. Wenn du das Script in der Subshell startest, wird die Shell nach Beendigung des Scripts beendet und nimmt dabei auch alle Variablen wieder weg. Starte simplevar.sh mal in ein Subshell bash simplevar.sh.

Mit einem abschließenden unset ist die Variable nach Scriptende gelöscht.
Olli Graf - raspithek.de
unsetCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Mit einem abschließenden unset ist die Variable nach Scriptende gelöscht.

Beachte,dass die bash beim Zugriff auf eine nicht gesetzte Variable nichts liefert und dass keine Fehlermeldung geworfen wird.

Hierbei wird dein Script in einer nicht interaktiven Subshell ausgeführt und alles, was darin definiert wird, verschwindet mit Beendigung der Subshell aus dem Speicher.

Variablennamen

Der Name einer Variable darf Buchstaben in Groß- und Kleinbuchstaben sowie Ziffern enthalten. Er darf aber nicht mit einer Ziffer beginnen oder ein Leerzeichen enthalten.Der Unterstrich ist erlaubt, auch als erstes Zeichen.

Halte immer im Hinterkopf, dass ${var} etwas anderes ist als ${VAR}.

Konstanten

Meistens werden Konstanten, also Variablen deren Weert sich während des Scriptlaufs nicht ändern, nur mit Großbuchstaben bezeichnet. Auf diese Weise kannst du auch später erkennen, dass es sich um eine Konstante handelt. Environmentvariablen wie PS1 sind keine echten Konstanten, du kannst sie jederzeit verändern, die bash selber ändert sie normalerweise nicht mehr selbstständig.

Deklariert werden Konstanten mit dem Schlüsselwort readonly.

# constant.sh

readonly const=1

const=2

Beim Versuch, einer readonly Variable einen anderen Wert zu zu weisen, wird die bash eine Fehlermeldung auswerfen.

Die Zuweisung eines neuen Werts an eine Konstante resultiert in einer Fehlermeldung
Olli Graf - raspithek.de
constantCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Die Zuweisung eines neuen Werts an eine Konstante resultiert in einer Fehlermeldung

Strings zusammenfügen

Um zwei Strings zusammenzufügen, reicht es, die beiden Teilstrings hintereinander zu schreiben. Hierbei sind die geschweiften Klammern notwendig.

# concat.sh

text="Inhalt"

text="Neuer ${text}"

echo "text=${text}"

Mit bash Variablen rechnen

Mit Variablen kannst du natürlich auch rechnen, wenn du Zahlenwerte in ihnen abgelegt hast. Allerdings würde die erste Idee, einfach

summe=a+b zu schreiben, nicht zum erwünschten Ergebnis führen, denn die bash behandelt zunächst alles hinter dem Gleichheitszeichen als String. Um den Ausdruck ausrechnen zu lassen, musst du mit let den Ausdruck als mathematische Operation durchführen lassen.Eine andere Möglichkeit ist, das expr Kommando ausführen zu lassen. Dies ist meiner Ansicht nach aber viel komplizierter.

# calc.sh

a=5
b=10

# Summenbildung falsch

summe=a+b

echo "Summe falsch: ${summe}"

# Summenbildung korrekt
let c=a+b

echo "Summe: ${c}"

let d=b-a

echo "Differenz: ${d}"

e=$(expr ${a} \* ${b})

echo "Multiplikation: ${e}"

let f=b/a

echo "Division: ${f}" 

Lauf von calc.sh zum Rechnen mit bash Variablen
Olli Graf - raspithek.de
calcCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Lauf von calc.sh zum Rechnen mit bash Variablen

Es gibt zwei Dinge, die du beachten solltest: Bei der Division zweier Integerwerte, kann das Ergebnis unter Umständen kein Integer mehr sein und beim Arbeiten mit expr musst du die Variablenwerte benutzen, mit let den Variablenname.

Variablen werden uns im weiteren Verlauf des Tutorials immer wieder begegnen. Als nächstes werde ich dir zeigen, wie du mit Variablen dein Script steuern kannst.

Schreibe einen Kommentar

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Olli Graf - raspithek.de
WordPress Cookie Hinweis von Real Cookie Banner