diff --git a/werkzeugkasten.tex b/werkzeugkasten.tex index 8ab1cbc..0526861 100644 --- a/werkzeugkasten.tex +++ b/werkzeugkasten.tex @@ -219,6 +219,28 @@ Die folgende Tabelle stellt einige der vielen Parameter vor: \LTXtable{\textwidth}{tab_kommandos_grep_parameter.tex} +Im Zusammenhang mit grep stößt fast jeder Shell-Skripter früher oder später auf +das Problem, daß er irgendwas davon abhängig machen will, ob ein bestimmter +Prozeß läuft oder nicht. Im Normalfall wird er zuerst folgendes ausprobieren, +was aber oft (nicht immer) in die Hose gehen wird: + +\texttt{ps aux | grep }\textit{prozessname}\texttt{ \&\& echo \dq}\textit{läuft +schon}\texttt{\dq} + +Der Grund dafür ist, daß unter Umständen in der Ausgabe von \texttt{ps} auch +das \texttt{grep}-Kommando samt Parameter (\textit{prozessname}) aufgelistet +wird. So findet das \texttt{grep}-Kommando sich quasi selbst. + +Abhilfe schafft das folgende Konstrukt: + +\texttt{ps aux | grep \dq}\textit{[p]rozessname}\texttt{\dq~\&\& echo +\dq}\textit{läuft schon}\texttt{\dq} + +Das p ist jetzt als eine Zeichenmenge (regulärer Ausdruck) angegeben worden. +Jetzt sucht \texttt{grep} also nach dem String \textit{prozessname}, in der +Ausgabe von \texttt{ps} erscheint das \texttt{grep}-Kommando allerdings mit +\textit{[p]rozessname} und wird somit ignoriert. + \index{grep=\texttt{grep}|)}