% $Id$ \chapter{Wo sind Unterschiede zu DOS-Batchdateien?}\index{DOS|(textbf}\index{Batchdateien|(textbf} Unter DOS werden Batchdateien oft dazu benutzt, lange Kommandos abzukürzen um die Tipparbeit zu vermindern, oder um sich das Merken von vielen Parametern zu ersparen. Diese Aufgabe überläßt man unter Unix am besten den Shell-Aliasen\index{Aliase} oder Shell-Funktionen. Shell-Skripte können viel mehr als Batchdateien. Wie der Name schon sagt, sind Batchdateien im Wesentlichen nur ein `Stapel' von Anweisungen, die nacheinander ausgeführt werden. Es stehen zwar auch einige einfache Mechanismen zur Verzweigung zu Verfügung, aber das entspricht bei weitem nicht den Möglichkeiten, die man an der Shell hat. Interaktive Batchdateien sind unter DOS nicht möglich, in der Shell steht dazu das \texttt{read}-Kommando zur Verfügung. Ein Mechanismus wie die Befehls-Substitution\footnote{Verarbeitung der Ausgabe von Kommandos mittels Backticks (siehe unter Befehlsformen - \ref{befehlsformen})} fehlt völlig. Ein weiteres interessantes Merkmal ist die Behandlung von Pipes. Es ist unter DOS zwar möglich, zwei Kommandos durch eine Pipe zu verbinden. Aber da es unter DOS keine Möglichkeit gibt, zwei Kommandos parallel laufen zu lassen, wird das erste Kommando vollständig ausgeführt, seine Ausgabe in eine temporäre Datei geschrieben und danach als Eingabe für das zweite Kommando benutzt. Daß so ein Verhalten unter Umständen schnell zu einer vollen Festplatte führen kann, sieht man bei dem Beispiel in Abschnitt \ref{cdrdao}, in dem eine CD kopiert werden soll. Shell-Skripte kann man dagegen eher mit einer `richtigen' Programmiersprache vergleichen. Es stehen alle Konstrukte zur Verfügung, die eine Programmiersprache auszeichnen (Funktionen, Schleifen, Fallunterscheidungen, Variablen, etc). \index{DOS|)}\index{Batchdateien|)}