48 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| % $Id$
 | |
| \chapter{Wofür Shell-Programmierung?}
 | |
| 
 | |
| Natürlich stellt sich die Frage, in welchen Situationen ein Shell-Skript der
 | |
| richtige Weg ist, und wann man vielleicht doch besser zu einer interpretierten
 | |
| oder compilierten Sprache greift.
 | |
| 
 | |
| \section{Wofür?}
 | |
| 
 | |
| Die Shell ist der perfekte Baukasten für das Unix-Paradigma `small is
 | |
| beautiful'. Die mitgelieferten Unix-Standardkommandos sind einfach gehalten,
 | |
| erledigen aber auf effiziente Weise die Arbeit für die sie programmiert wurden.
 | |
| Mit der Shell, bzw. dem Shell-Skript, wird aus dem Heinzelmännchen ein starker
 | |
| Riese.
 | |
| 
 | |
| Shell-Skripte werden im Wesentlichen aus zwei Gründen geschrieben: Erstens,
 | |
| weil man so ständig wiederkehrende Kommandos zusammenfassen kann, die man dann
 | |
| mit einem einfachen Aufruf starten kann, und zweitens, weil man so einfache
 | |
| Programme schreiben kann, die relativ intelligent Aufgaben erledigen können.
 | |
| 
 | |
| Der erste Aspekt ist wichtig, wenn man beispielsweise regelmäßig auftretende
 | |
| Aufgaben erledigen möchte, wie z. B. das Backup von Log-Dateien. In dem Fall
 | |
| schreibt man sich ein Skript, das die Dateien archiviert, und sorgt dafür, daß
 | |
| dieses Skript in regelmäßigen Abständen aufgerufen wird (per
 | |
| Cron-Job\index{Cron-Job}).
 | |
| 
 | |
| Der zweite Fall tritt ein, wenn man eine mehr oder weniger komplexe Abfolge von
 | |
| Befehlen ausführen möchte, die voneinander abhängen. Ein Skript das zum
 | |
| Beispiel eine Audio-CD kopieren soll, sollte das Brennprogramm nur dann
 | |
| aufrufen, wenn der Einlesevorgang erfolgreich abgeschlossen wurde.
 | |
| 
 | |
| \section{Wofür nicht?}
 | |
| 
 | |
| Ein Shell-Skript besteht aus einer Abfolge von System-Tool-Aufrufen. Das heißt,
 | |
| für jeden Schritt in einem Skript wird ein neuer Prozeß gestartet. Das kostet
 | |
| eine Menge Systemzeit, die Skripte laufen also vergleichsweise langsam. Für
 | |
| komplexe, zeitkritische oder langwierige Aufgaben sollte man also besser zu
 | |
| Perl, Python oder in Extremfällen zu C / C++ greifen.
 | |
| 
 | |
| Shell-Skripte können als imperativ angesehen werden, für viele Aufgaben ist
 | |
| aber ein objektorientierter Ansatz wesentlich geeigneter. Auch hier ist also
 | |
| der Griff zu einer anderen Sprache angeraten.
 | |
| 
 | |
| Es gibt zwar ein paar Tools\footnote{Zum Beispiel dialog im Textmodus, oder
 | |
| xmessage unter X.}, mit denen auch Shell-Skripte eine grafische oder
 | |
| textorientierte Benutzeroberfläche (GUI) bekommen können, aber das ist trotzdem
 | |
| nicht das natürliche Terrain der Shell-Programmierung.
 |