Ich möchte an Grep Befehl übergeben (in einem Bash-Skript), die Dateierweiterungen zu suchen, mit - include Argument. Diese Dateierweiterungen werden vom Benutzer über die Befehlszeile als Argument eingegeben (das vierte Argument enthält Dateierweiterungen in einer kommagetrennten Weise).übergeben Variable Wert an - include Argument mit grep Befehl innerhalb Bash-Skript
Das ist mein Skript:
...
echo "Searching in ${4} files for pattern"
egrep -irn . --include=\*.{"${4}"} --exclude=\*.{class} -e "${3}"
...
Ich habe auch versucht, einen String mit dem Befehl Erstellen und eval Aufruf wie folgt aus:
...
comando="egrep -irn . --include="\\*.{${4}}" --exclude=\*.{class} -e "${3}""
echo $comando
resultado=eval $comando
echo $resultado
(wenn comando Echo i diese: egrep -inn. --include = *. {wsdl, xml} --exclude = *. {class} -e Text, der genau das Kommando ist, das bei der Ausführung in der Befehlszeile einige Übereinstimmungen zurückgibt.
Ich habe auch versucht, eine Variable mit allen vorbei Include Argument:
...
argumento="\\*.{${4}}"
egrep -irn . --include=$argumento --exclude=\*.{class} -e "${3}"
...
Dies ist, wie das Skript von der Kommandozeile aufgerufen wird:
sh ./searchRecursiveIterativeEgrep.sh/tmp/test/andere// usr/local/aux/"text" wsdl, xml
Irgendwelche Ideen, wie man das erreicht? Vielen Dank
Das UNIX-Tool zum Suchen von Dateien hat den passenden Namen 'find', nicht' grep'. Vergiss, du hast schon mal gesehen, dass GNU-Greps-Optionen zum Suchen von Dateien eine schreckliche Idee waren (Whats next - grep Optionen, um die Ausgabe zu sortieren) und benutze 'find' um Dateien zu finden und' grep' um ** G ** lobal zu suchen für eine ** R ** egular ** E ** xpression in einer Datei und ** P ** rint den passenden Text. Dein Leben wird viel einfacher sein. –
Ich versuche einen regulären Ausdruck in Dateien zu finden, also brauche ich grep. Der Befehl funktioniert wie erwartet, aber ich kann nicht mit Argumenten von der Befehlszeile arbeiten. –
a) grep ist nicht das einzige Werkzeug, das reguläre Ausdrücke in Dateien finden kann und b) Ich schlage nicht vor, dass Sie grep nicht benutzen, um reguläre Ausdrücke in Dateien zu finden. Ich schlage vor, dass Sie grep nicht verwenden Dateien, da dies der falsche Ansatz ist und Ihren grep-Befehl lächerlich kompliziert macht. Verwenden Sie 'find', um die Dateien zu finden, und' grep' (oder ein anderes Tool), um in den gefundenen Dateien nach regexps zu suchen. Etwas in der Art von 'finden. -name '* .extension' -print0 | xargs -0 grep 'regexp''. –