* Markus Hahn ([EMAIL PROTECTED]) wrote/schrieb:

> Kannst du mir ausserdem die Befehle kommentieren. Ein bisschen C
> Kenntnisse habe ich ja,

Na, wenn Du C-Kenntnisse hast, ist das Ding doch selbsterklärend. Hast doch
selbst gesagt, daß es ein Zweizeiler ist.

Du brauchst nur 3 Manpages: bash, find, grep, schon ist die Geschichte
zuende erzählt.









Na gut.








usage(){
  cat << EOF >&2
        (lösch)
EOF
}  

Hier wird eine Funktion für später vorbereitet. Zu lernen gibts hier nur
das "Document-Here"-Konstrukt mit "<< EOF" und die Umleitung der Ausgabe in
den Fehlerkanal.

if [ $# -lt 2 ]
then
   usage
   exit 1
fi

Wenn weniger als 2 Argumente da waren, wird usage() ausgeführt und mit
Fehlerstatus ausgestiegen. 

regausdr=$1

Das erste Argument kriegt einen lesbaren Namen, $regausdr.

dir=${3:-'pwd'}

$dir wird entweder mit dem dritten Argument, oder mit der Ausgabe von pwd
belegt. Da ist noch ein Fehler. Es muß heißen:

dir=${3:-`pwd`}


for name in `find $dir -type d -print`
do...done

find sucht unterhalb des in $dir genannten Verzeichnis nach Verzeichnissen
und gibt sie aus. Die for-Schleife liest eine Ausgabezeile nach der anderen
und belegt die Variable $name damit.

grep $regausdr $name/$2

Durchsucht $name/Dateimuster nach dem Suchmuster.

Alles in allem kein sehr schönes Script. So würde ich mir nicht einmal für
den Hausgebrauch über die Runden helfen. Das lieblose Geschnodder kann man
auch direkt am Prompt tippen. 

Mich persönlich stört auf den ersten Blick, daß die $1 zwischendrin grundlos
umbenannt wird, während sich die $2 in der Form bis zum Schluß durchmogelt.
Wer schon diese kryptische Aktion mit der geschweiften Klammer anwendet,
dürfte etwas mehr auf die Ordnung achten, wenn das auch noch in einem Buch
abgedruckt wird.

-martin
-- 
                  Weird enough for government work.
---------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an