diff --git a/wie_sieht_ein_shell_skript_aus.tex b/wie_sieht_ein_shell_skript_aus.tex index 90fd97b..f268298 100644 --- a/wie_sieht_ein_shell_skript_aus.tex +++ b/wie_sieht_ein_shell_skript_aus.tex @@ -381,7 +381,7 @@ Die \textsl{Befehle} werden ausgef \index{for=\texttt{for}|)} -\subsection{while\ldots}\label{while}\index{while=\texttt{while}|(textbf}\index{Schleife>while-=\texttt{while}-|see{while}}\index{Schleife>Fußgesteuerte-|see{while}}\index{Fußgesteuerte Schleife|see{while}} +\subsection{while\ldots}\label{while}\index{while=\texttt{while}|(textbf}\index{Schleife>while-=\texttt{while}-|see{while}} Die \texttt{while}-Schleife ist wieder ein Konstrukt, das einem aus vielen anderen Sprachen bekannt ist: die Kopfgesteuerte Schleife. @@ -408,14 +408,25 @@ ersetzt man die Funktion durch geschickte Anwendung der \index{while=\texttt{while}|)} -\subsection{until\ldots}\label{until}\index{until=\texttt{until}|(textbf}\index{Schleife>until-=\texttt{until}-|see{until}}\index{Schleife>Kopfgesteuerte-|see{until}}\index{Kopfgesteuerte Schleife|see{until}} +\subsection{until\ldots}\label{until}\index{until=\texttt{until}|(textbf}\index{Schleife>until-=\texttt{until}-|see{until}} -Die \texttt{until}-Schleife ist das Gegenstück zur \texttt{while}-Schleife: die ebenfalls aus vielen anderen Sprachen bekannte Fußgesteuerte Schleife. +Die \texttt{until}-Schleife ist das Gegenstück zur \texttt{while}-Schleife. +Allerdings nicht in dem Sinn, wie sie in den meisten anderen +Programmiersprachen verstanden wird. Sie arbeitet in der Shell genau wie die +\texttt{while}-Schleife, mit dem Unterschied daß die Bedingung negiert wird. +Es ist also auch eine kopfgesteuerte Schleife, die allerdings so lange läuft +wie die angegebene Bedingung nicht zutrifft. Die Syntax der \texttt{until}-Schleife lautet wie folgt:\nopagebreak \LTXtable{\textwidth}{tab_until.tex} -Die \textsl{Befehle} werden ausgeführt, bis die \textsl{Bedingung} erfüllt ist. Dabei wird die \textsl{Bedingung} nach der Ausführung der \textsl{Befehle} überprüft. Die \textsl{Bedingung} wird dabei üblicherweise, genau wie bei der \texttt{if}-Anweisung, mit mit dem Befehl \texttt{test}\index{test=\texttt{test}} (siehe unter \ref{bedingungen}) formuliert. Wenn die Ausführung eines Schleifendurchlaufs bzw der ganzen Schleife abgebrochen werden soll, müssen die Kommandos \texttt{continue}\index{continue=\texttt{continue}} (\ref{continue}) bzw. \texttt{break}\index{break=\texttt{break}} (\ref{break}) benutzt werden. +Die \textsl{Bedingung} wird dabei üblicherweise, genau wie bei der +\texttt{if}-Anweisung, mit mit dem Befehl +\texttt{test}\index{test=\texttt{test}} (siehe unter \ref{bedingungen}) +formuliert. Wenn die Ausführung eines Schleifendurchlaufs bzw der ganzen +Schleife abgebrochen werden soll, müssen die Kommandos +\texttt{continue}\index{continue=\texttt{continue}} (\ref{continue}) bzw. +\texttt{break}\index{break=\texttt{break}} (\ref{break}) benutzt werden. \medskip\emph{Beispiel:} Hier wird die Bedingung nicht per \texttt{test} sondern mit dem Rückgabewert\index{Rückgabewert} des Programms \texttt{grep}\index{grep=\texttt{grep}} formuliert.\nopagebreak \LTXtable{\textwidth}{tab_beisp_until.tex}