Klammer-Expansion zugefgt

This commit is contained in:
rschaten 2001-09-25 17:48:00 +00:00
parent 4a00e0290b
commit 90a49f0f52
2 changed files with 51 additions and 8 deletions

View File

@ -0,0 +1,23 @@
\begin{longtable}{|X l|}
% KILLED & LINE!!!! \kill
\hline
\endfirsthead
\endhead
\endfoot
\hline
\endlastfoot
\multicolumn{2}{|X|}{\texttt{\$ mkdir /usr/local/src/bash/\{old,new,dist,bugs\}}} \\
\multicolumn{2}{|X|}{Erzeugt die Verzeichnisse} \\
\multicolumn{2}{|X|}{\textit{/usr/local/src/bash/old}} \\
\multicolumn{2}{|X|}{\textit{/usr/local/src/bash/new}} \\
\multicolumn{2}{|X|}{\textit{/usr/local/src/bash/dist}} \\
\multicolumn{2}{|X|}{\textit{/usr/local/src/bash/bugs}} \\
\multicolumn{2}{|X|}{\STRUT\texttt{\$ chown root /usr/\{ucb/\{ex,edit\},lib/\{ex?.?*,how\b{ }ex\}\}}} \\
\multicolumn{2}{|X|}{Weist die folgenden Dateien / Verzeichnisse dem Benutzer root zu:} \\
\multicolumn{2}{|X|}{\textit{/usr/ucb/ex}} \\
\multicolumn{2}{|X|}{\textit{/usr/ucb/edit}} \\
\multicolumn{2}{|X|}{\textit{/usr/lib/ex?.?*}} \\
\multicolumn{2}{|X|}{\textit{/usr/lib/how\b{ }ex}} \\
\multicolumn{2}{|X|}{Dabei wird \textit{/usr/lib/ex?.?*} noch weiter expandiert.} \\
\end{longtable}

View File

@ -170,14 +170,6 @@ das Suchmuster \texttt{.*}.
\index{Meta-Zeichen|)}
\section{Klammer-Expansion}
man bash
/Brace Expansion
TODO!!!
\section{Mustererkennung}\index{Mustererkennung|(textbf}\label{mustererkennung}
\index{ed=\texttt{ed}|(textbf}\index{ex=\texttt{ex}|(textbf}\index{vi=\texttt{vi}|(textbf}\index{sed=\texttt{sed}|(textbf}\index{awk=\texttt{awk}|(textbf}\index{grep=\texttt{grep}|(textbf}\index{egrep=\texttt{egrep}|(textbf}
\index{*=\texttt{*}|(textbf}\index{.=\texttt{.}|(textbf}\index{\^=\texttt{\^}|(textbf}\index{\$=\texttt{\$}|(textbf}\index{Backslash|(textbf}\index{[ ]=\texttt{[ ]}|(textbf}\index{\textbackslash( \textbackslash)=\texttt{\textbackslash( \textbackslash)}|(textbf}\index{\textbackslash\{ \textbackslash\}=\texttt{\textbackslash\{ \textbackslash\}}|(textbf}\index{\textbackslash< \textbackslash>=\texttt{\textbackslash< \textbackslash>}|(textbf}\index{+=\texttt{+}|(textbf}\index{?=\texttt{?}|(textbf}\index{|=\texttt{|}|(textbf}\index{( )=\texttt{( )}|(textbf}\index{Regulärer Ausdruck|(textbf}
@ -226,6 +218,34 @@ Bei einigen Tools (\texttt{ex}, \texttt{sed} und \texttt{ed}) werden zwei Muster
\index{Mustererkennung|)}
\section{Klammer-Expansion\label{klammerexpansion}\index{Klammer-Expansion|(textbf}\index{Brace Expansion|see{Klammer-Expansion}}}
Dieser Mechanismus ist sehr praktisch, aber nur wenigen Programmierern bekannt.
Er steht nicht in jeder Shell zur Verfügung.
Über die Klammer-Expansion (Brace Expansion) können automatisch Strings
generiert werden. Dabei wird ein Muster angegeben, nach dem neue Strings
aufgebaut werden. Dieses Muster besteht aus einem Prefix, der allen erzeugten
Strings vorangestellt wird, und einer in geschweifte Klammern eingebundenen und
durch Komma getrennten Menge von String-Teilen. Dieses Konstrukt expandiert zu
mehreren, durch Leerzeichen getrennten Strings, indem sämtliche möglichen
Permutationen generiert werden.
Die durch die Klammern angegebenen Mengen können auch verschachtelt werden.
Dabei werden die Klammern von links nach rechts aufgelöst. Die Ergebnisse
werden nicht sortiert, sondern in der Reihenfolge ihrer Erstellung
zurückgegeben werden.
Die Expansion von Klammern erfolgt vor der Behandlung aller anderen
Ersetzungen. Auch eventuell vorhandenen Sonderzeichen bleiben in dem
expandierten Text erhalten. So lassen sich auch Variablen durch diese Technik
erzeugen.
\medskip\emph{Beispiele:}\nopagebreak
\LTXtable{\textwidth}{tab_beisp_klammerexpansion.tex}
\index{Klammer-Expansion|)}
\section{Programmablaufkontrolle}
Bei der Shell-Programmierung verfügt man über ähnliche Konstrukte wie bei anderen Programmiersprachen, um den Ablauf des Programms zu steuern. Dazu gehören Funktionsaufrufe, Schleifen, Fallunterscheidungen und dergleichen.\nopagebreak