% $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|)}
