Variable Instruktion

L

lazybaer

Aktives Mitglied
Thread Starter
Dabei seit
08.02.2006
Beiträge
172
Reaktionspunkte
3
Ich möchte eine variable find-Instruktion bauen.
zB: find -x -f /Volume ... | grep xyz | grep -v abc
und weitere Elemente.

Gibt es eine Möglichkeit, das Zeichen | (wie heisst das Ding eigentlich?) in eine Variable zu packen? Bin bislang gescheitert.

Gruss und danke zum voraus
Lazy
 
Eval? Oder ich verstehe die Frage nicht.
 
Wie funktioniert Eval? Könnte sein, dass dies die Lösung ist.
 
Was möchtest du denn erreichen? Eval bringt meist mehr Probleme, als es löst.
 
eben, ich möchte einen find absetzen, gefolgt von 1 bis max. 8 greps (variabel)
ich könnte es ja mit 8 fix machen, sieht aber doof aus und ist ev. vom Zeitbedarf her ungünstig
 
Nur als Idee

Code:
#!/bin/bash

all_greps=""

path=$1
shift

while [ -n "$1" ]; do
    case "$1" in
        !*)
            pattern=`echo $1 | sed 's/^!//'`
            cmd="grep -v \"$pattern\""
            ;;
        *)
            cmd="grep \"$1\""
            ;;
    esac

    all_greps="$all_greps | $cmd"
    shift
done

complete_command="find \"$path\" -type f $all_greps"

echo $complete_command
#eval $complete_command
exit 0

./grep_test.sh / '!hello' 'das hier'

Alle mit "!" vorne werden gefiltert. Es muss leider escaped werden wenn man double quotes nimmt.
Das "eval" hab ich auskommentiert.

a) Ich mache sowas in perl
b) Ich wollte nur mal sehen wie man's baut
c) Ich würde es nicht benutzen
 
@pmau
danke für den Input
es bleibt aber, dass das Pipe-Symbol innerhalb der "" nicht akzeptiert wird
 
Ich kann Dir nicht folgen. Das Script oben geht und hängt ein paar grep an das find.
Was soll da jetzt nicht gehen?
 
@pmau
sorry, hab was übersehen
du hast recht, das Ding läuft
 
@pmau
Mein Script läuft nun zur vollsten Zufriedenheit. Danke für deinen Input.
Lazy
 
Zurück
Oben Unten