Hallo Welt!
Teil 1: Grundlagen der BASH
Meta-Character und Escapes
Trotz unterschiedlicher Schreibweise ist das Ergebnis der Zeilen zwei und drei identisch. Der Grund dafür sind Steuerzeichen (sogenannte Meta-Character und Control-Character), die BASH besonders interpretiert. Leerzeichen gelten als Trennung zwischen Parametern eines Befehls, wobei mehrere Leerzeichen hintereinander wie ein einziges wirken. Im Beispiel wird dem Befehl echo mit den Parametern "Hallo" und "Welt" aufgerufen. Von diesen Spezialzeichen gibt es einige, die wichtigsten sind in Tabelle 1 aufgelistet. echo gibt alle Parameter, die keine Steuer-Parameter sind, mit einem Leerzeichen getrennt hintereinander aus. Um mehr als ein Leerzeichen zwischen "Hallo" und "Welt" zu erhalten, müssen wir die Leerzeichen im Zwischenraum escapen – also der BASH mitteilen, dass dies ein echtes Leerzeichen und kein Trenner zwischen Parametern ist. Die Aufgabe es Escape-Zeichens nimmt der Backslash "\" wahr.
echo Hallo\ \ \ Welt!
Soll ein Backslash ausgegeben werden, so muss man ihn selbst escapen, also \\ schreiben. Alternativ können Sie einfache oder doppelte Anführungszeichen (sogenannte Quotes) benutzen, um Leerzeichen und die meisten anderen besonderen Zeichen ihrer Sonderstellung zu entheben:
echo "Hallo Welt!"
Die Quotes nimmt man aber am besten in kleinen Dosen ein, sie werden uns im Laufe dieser Serie immer mal wieder in einem anderen Zusammenhang begegnen und dann quasi "beiläufig" erklärt.
Variablen
Natürlich wäre es langweilig, immer nur feste Texte auszugeben. Um Werte oder Worte zwischenzuspeichern, kennt die BASH Variablen. Anders als in vielen Hochsprachen unterscheidet BASH nicht zwischen verschiedenen Typen, in jeder Variablen können ganzen Zahlen (Dezimalzahlen sind grundsätzlich nicht erlaubt), Buchstaben, Worte oder ganze Sätze gespeichert werden. Eine Variable wird über ihren Namen angesprochen. Sie braucht dabei vor ihrer ersten Verwendung nicht deklariert ("angemeldet") werden, sie entsteht automatisch durch die erste Wertezuweisung. Groß-/Kleinschreibung sind bei den Namen übrigens relevant.
#!/bin/bash Variable=2 Variable=a Variable=Hallo Variable=Hallo\ Welt! Variable="Hallo Welt!"
Um an den Wert einer Variablen heranzukommen, verwendet man ebenfalls wieder ihren Namen, mit vorangestelltem Dollar-Zeichen "$". Alternativ können Sie den Namen zusätzlich in geschweifte Klammern einfassen – diese Variante wird gebraucht, wenn dem Variablen-Namen unmittelbar ein Buchstabe folgt:
Wert=100
echo $Wert DM
echo ${Wert}DMDie zweite Zeile liefert "100 DM", während die dritte "100DM" ohne Leerzeichen zwischen Betrag und Währungseinheit ausgibt. Ohne geschweifte Klammern hätten wir den Inhalt der (nicht existenten) Variablen $WertDM bekommen. Nicht existente Variablen haben stets keinen Wert, sie sind einfach leer.
BASH ersetzt die Variablen-Namen übrigens an fast jeder Stelle durch die Werte der Variablen, man spricht hier von der Auflösung der Variablen. Die einzige Ausnahme sind die Hochkomma "'" – was dort zwischen steht, wird nicht ersetzt. Um den Namen der Variablen inklusive Dollar-Zeichen zu bekommen, können wir alternativ auch das "$" escapen:
Wert=100 Wert="$Wert DM" echo Inhalt der Variablen '$Wert': $Wert echo Inhalt der Variablen \$Wert: $Wert
In der zweiten Zeile haben wir Wert eine Zeichenfolge zugewiesen, in der die Variable selbst vorkommt. Die BASH wertet dabei zunächst den Teil rechts vom Gleichheitszeichen aus, wobei für $Wert die Ziffern 100 eingesetzt werden – auf der rechten Seite steht dann "100 DM". Erst danach wird das Ergebnis der rechten Seite (der sogenannte R-Value) der Variablen auf der linken Seite des Gleichheitszeichens (dem sogenannten L-Value) zugewiesen. Diese Behauptung kann man übrigens mit einem kleinen Programmbeispiel beweisen, dazu mehr in der nächsten Folge.



