Shell-Programmierung/wo_sind_unterschiede_zu_dos_batchdateien.tex

35 lines
1.8 KiB
TeX
Raw Normal View History

2001-07-02 14:52:18 +02:00
\chapter{Wo sind Unterschiede zu DOS-Batchdateien?}\index{DOS|(textbf}\index{Batchdateien|(textbf}
Unter DOS werden Batchdateien oft dazu benutzt, lange Kommandos abzuk<75>rzen um
die Tipparbeit zu vermindern, oder um sich das Merken von vielen Parametern zu
ersparen. Diese Aufgabe <20>berl<72><6C>t man unter Unix am besten den
Shell-Aliasen\index{Aliase} oder Shell-Funktionen.\bigskip
Shell-Skripte k<>nnen viel mehr als Batchdateien.\bigskip
Wie der Name schon sagt, sind Batchdateien im Wesentlichen nur ein `Stapel' von
Anweisungen, die nacheinander ausgef<65>hrt werden. Es stehen zwar auch einige
einfache Mechanismen zur Verzweigung zu Verf<72>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<72>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<73>ndig ausgef<65>hrt, seine Ausgabe in eine tempor<6F>re Datei
geschrieben und danach als Eingabe f<>r das zweite Kommando benutzt. Da<44> so ein
Verhalten unter Umst<73>nden schnell zu einer vollen Festplatte f<>hren kann, sieht
man bei dem Beispiel, in dem eine CD kopiert werden soll (Kapitel \ref{cdrdao},
Seite \pageref{cdrdao}).
Shell-Skripte kann man dagegen eher mit einer `richtigen' Programmiersprache
vergleichen. Es stehen alle Konstrukte zur Verf<72>gung, die eine
Programmiersprache auszeichnen (Funktionen, Schleifen, Fallunterscheidungen,
Variablen, etc).
\index{DOS|)}\index{Batchdateien|)}