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.
Das folgende Beispiel zeigt ein Skript, daß die Zeilen einer Datei durchnummeriert und das Ergebnis in einer HTML-Datei speichert.
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.
1: #!/bin/bash ... 13: # Datei durchnummerieren und spitze Klammern behandeln 14: sed "s/</\</g" $1 | sed "s/>/\>/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