Home · Kontakt · Impressum
contents index previous up next
Next: 15.3.2 test Up: 15.3 Grundstrukturen Previous: 15.3 Grundstrukturen

15.3.1 Auswerten

In unserem ersten Beispiel geht es um ein Skript mit dem Namen addiere, daß zwei als Parameter eingegebene Zahlen miteinander addiert.

Listing 15.2   addiere15.1

   1: #!/bin/bash
   2: 
   3: # Addiert zwei als Parameter angegebene Zahlen
   4: #   addiere ZAHL1 ZAHL2
   5: 
   6: # Berechnen
   7: summe=$(( $1 + $2 ))
   8: 
   9: # Ausgabe
  10: echo "Die Summe aus $1 und $2 ist $summe."

Zeile 1 kennen Sie schon aus dem vorherigen Abschnitt. Der sogenannte She-Bang sorgt dafür, daß die folgenden Shell-Kommandos durch eine neue Instanz der Bash abgearbeitet werden. Das Schweinegatter ist in der Shell ein Kommentarzeichen. Alles von diesem Zeichen bis zum Ende der Zeile wird als Kommentar aufgefaßt. Skripte sollten Sie immer gut kommentieren, um auch später das Skript verstehen zu können.

In Zeile 7 werden die beiden Parameter 1 und 2 addiert und das Ergebnis in die Variable summe geschrieben. Dieser Vorgang wird als Arithmetische Ausdehnung (engl. Arithmetic Expansion) bezeichnet. Im Klartext heißt das nichts anderes, als daß der Ausdruck in den Klammern berechnet wird und das Ergebnis der Berechnung zurückgegeben wird. Das Format einer Arithmetischen Ausdehnung ist

$((AUSDRUCK))

Die Ausgabe des Ergebnis in Zeile 10 durch echo sollte Ihnen bekannt sein.


Tabelle 15.2: Arithmetische Operatoren
Operator Bedeutung
wert++ Post-Inkrement der Variablen
wert-- Post-Dekrement der Variablen
++wert Prä-Inkrement der Variablen
--wert Prä-Dekrement der Variablen
+ - Plus und Minus
! ~ Logische und Bitweise Negation
* / % Mal, Teilen und Modulo
<< >> linkes und rechtes bitweises Verschieben
<= >= < > Vergleichsoperatoren
== != Gleich und Ungleich
& ^ | Bitweises UND, exklusives ODER und ODER
&& || Logisches UND und ODER
AUSDR1?AUSDR2:AUSDR3 Wenn Dann Sonst Ausdruck


Das folgende Beispiel zeigt ein Skript, daß die Zeilen einer Datei durchnummeriert und das Ergebnis in einer HTML-Datei speichert.

Listing 15.3   tohtml

   1: #!/bin/bash
   2: 
   3: # Gibt ein Skript als zeilennummerierte HTML-Datei zurück
   4: #   tohtml DATEINAME
   5: 
   6: # Name der Ausgabedatei
   7: out="$1.html"
   8: 
   9: # Lege den Anfang der HTML-Datei an
  10: echo -e "<html>\n<head>\n<title>$1</title>\n</head>\n<body>\n" > $out
  11: echo -e "<h1 align='center'>Listing: $1</h1>\n<pre>" >> $out
  12: 
  13: # Datei durchnummerieren
  14: expand $1 | nl -w 4 -b a -s ": " >> $out
  15: 
  16: # Ende der HTML-Datei
  17: echo -e "</pre>\n</body>\n</html>\n" >> $out

Einfach dem Skript die gewünschte Datei mitgeben und schon ist eine passende Datei entstanden.

ole@enterprise:~/test> tohtml addiere
ole@enterprise:~/test> ls -l addiere*
-rwxr-xr-x    1 ole      users         172 Nov 26 18:52 addiere
-rw-r--r--    1 ole      users         356 Nov 26 20:35 addiere.html

Natürlich ist dieses Beispiel sehr einfach und hat viele Schwachstellen. So würden die Spitzenklammern in der Datei einfach in die HTML-Datei kopiert und dort dann vom Browser als HTML-Tags interpretiert. Also müssen vorher möglichst alle Spitzen-Klammern in HTML-Sonderzeichen umgewandelt werden. Dies erledigt der Streaming-Editor sed.

Listing 15.4   tohtml Version 2

   1: #!/bin/bash
      ...
  13: # Datei durchnummerieren und spitze Klammern behandeln
  14: sed "s/</\&lt;/g" $1 | sed "s/>/\&gt;/g" \
  15:   | expand | nl -w 4 -b a -s ": " >> $out
  16: 
  17: # Ende der HTML-Datei
  18: echo -e "</pre>\n</body>\n</html>\n" >> $out


contents index previous up next
Next: 15.3.2 test Up: 15.3 Grundstrukturen Previous: 15.3 Grundstrukturen
  © 2004 by IT-Dozent Ole Vanhoefer · Zum Seitenanfang