Klammer-Expansion zugefgt
This commit is contained in:
parent
4a00e0290b
commit
90a49f0f52
23
tab_beisp_klammerexpansion.tex
Normal file
23
tab_beisp_klammerexpansion.tex
Normal 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}
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user