Diese Seite ist optimiert für eine Auflösung von min. 1280x1024.

facebook   google   twitter   digg   email  





Bash-Scripte



Erstellung von Bash-Scripten

Bei Scripten muss man eigentlich nichts grossartiges beachten. Sie brauchen z.B. keine spezielle Endung etc. Lediglich 2 Sachen sollte man machen. Zum einen sollte in der ersten Zeile IMMER #!/bin/bash stehen, damit man direkt weiss, um was für ein Script es sich handelt. Auch Programme interpretieren anhand dieser Zeile, um welche Programmiersprache es sich handelt. vi z.B: richtet sein Syntaxhighlighting danach aus, oder wenn man das Scritp auf der csh/tsh etc. startet weiss die Shell direkt, dass das Script mit dem Bash-Befehlsinterpreter ausgeführt werden muss. Das andere, was man beachten muss, sind die Rechte der Datei. Hierbei muss man bedenken, dass das Script ausgeführt werden muss und dass es zum Ausführen gelesen werden muss. Es braucht also für denjenigen, der es ausführen soll mindestens die Berechtigung "5" (r und x, lesen und ausführen - r-x).

Syntax von Bash-Scripten

Die Syntax ist der, der Befehlszeile identisch. Man hat hier jedoch den Komfort, dass man übersichtlicher arbeiten kann. Ein Beispiel dazu mit der Shell:
server:~# for i in `seq 1 850`;do /home/bin/tool1.pl server$i; /home/bin/tool2.pl server$i; echo $i; done
#!/bin/bash
for i in `seq 313 850`;do 
   #gerade verarbeitete zahl ausgeben
   echo $i
   /home/bin/tool1.pl server$i; 
   /home/bin/tool2.pl server$i; 
done;

Kommentieren

Auf der Shell kommentiert man in der Regel eigentlich nichts. Einzige Ausnahme ist evtl, wenn man einen langen Befehl zurechtsgestutzt hat und einem kommt, dass man vor dem Absetzen noch etwas anderes ausführen möchte. Dann kommentiert man diesen Befehl aus und drückt Enter. Somit hat man ihn in der Bash-Historie und kann ihn nochmal rauskramen, Kommentarzeichen weg und ausführen. Spart Zeit, sowas. Kommentiert wird in der Bash mit einem Rautezeichen ("#"). Die Raute muss nicht zwingend am Anfang einer Zeile/alleine in einer Zeile stehen, sondern man kann auch hinter einer Zeile Kommentieren - siehe oben.

Das Semikolon

Mittels dem Semikolon kann man der Bash sagen, dass ein neuer Befehl beginnt. Ein Beispiel wie es geht, und wie es nicht geht:
pbarthel@pux:~$ date
Di 14. Apr 10:50:43 CEST 2009
pbarthel@pux:~$ uptime
 10:50:45 up 53 min,  2 users,  load average: 0.56, 0.22, 0.12
pbarthel@pux:~$ date uptime
date: ungültiges Datum „uptime“
pbarthel@pux:~$ date; uptime
Di 14. Apr 10:50:50 CEST 2009
 10:50:50 up 53 min,  2 users,  load average: 0.52, 0.21, 0.12
pbarthel@pux:~$ 

Die Benutzung des Doppelpunktes

Der Doppelpunkt (":") wird ähnlich wie "/dev/null" verwendet. Ein Doppelpunkt gibt "nichts" aus. ein Kommentarzeichen als Beispiel gibt zwar auch "nichts" aus, aber ein anderes "nichts" ;-). Kommentarzeichen ignorieren alles, was ab dem Kommentarzeichen kommt und geben einen Kommentar nicht aus, der Doppelpunkt hingegen, gibt wirklich "nichts" aus. Das zeigt folgendes Beispiel:
pbarthel@pux:~$ cat mooh 
testinhalt
der tollen 
datei mooh
pbarthel@pux:~$ # > mooh
pbarthel@pux:~$ cat mooh 
testinhalt
der tollen 
datei mooh
pbarthel@pux:~$ : > mooh
pbarthel@pux:~$ cat mooh 
pbarthel@pux:~$ 
Ein ":" verhält sich also wie "/dev/null". Man kann auch Ausgaben nach ":" umleiten:
pbarthel@pux:~$ cat mooh > :
pbarthel@pux:~$ cat mooh > /dev/null
pbarthel@pux:~$ cat mooh 
testinhalt
der tollen 
datei mooh
pbarthel@pux:~$

Über mehrere Zeilen hinweg

Wer einen Befehl über mehrere Zeilen verteilen will (der übersichtlichkeit halber) kann das mit einem Backslash machen ("\"):
pbarthel@pux:~$ echo "ich\
> tippe\
> in mehreren zeilen\
> ";
ichtippein mehreren zeilen;
pbarthel@pux:~$ 
In einem Script ist das natürlich genauso:
#!/bin/bash
echo "test\
ueber\
merhere\
zeilen";



  logo