Die Ausführung eines Grep-Befehls innerhalb einer Schleife führt zu einem Fehler

Die Ausführung eines Grep-Befehls innerhalb einer Schleife führt zu einem Fehler

Ich versuche, ein kleines Programm zu erstellen, um die Anzahl der Zeilen in einer Reihe von Protokolldateien basierend auf einem vom Benutzer angegebenen Zeitrahmen zu zählen. Ich befinde mich derzeit im letzten Schritt und aus irgendeinem Grund schlägt die Ausführung des Programms mit dem folgenden Fehler fehl grep: |: Keine solche Datei oder kein solches Verzeichnis grep: wc: Keine solche Datei oder kein solches Verzeichnis

Die Ausführung erfolgt in Zeile 6 des folgenden Codes. Zeile 7 zeigt einen Beispielbefehl, den ich auszuführen versuche. Wenn ich Zeile 6 kommentiere und Zeile 7 entkommentiere, wird er ausgeführt. Vielleicht übersehe ich etwas Einfaches. Ich bin für Ihre Hilfe dankbar. Die Werte dieser Variablen sind unten angegeben.

Dateiname="'summary_* | wc -l" Befehl="grep '" comm=ived>20161215110

1 for (( z=0; z<($interval/10); z++ ))
2 do
3       comm=$tempCommand$count
4       let "count = $count + 1"                                
5       #echo "$command$comm$fileName"
6       totalCount=`$command$comm$fileName`
7       #totalCount=`grep 'ived>20161215110' summary_* | wc -l`
8       echo $totalCount
9 done

Antwort1

Die Shell erkennt das |Metazeichen gleich zu Beginn der Analyse. Beim Erweitern eines Variablenwerts ist es bereits zu spät, daher |verhält es sich wie ein wörtlicher vertikaler Strich, also als ob Sie ausgeführt hätten

grep 'ived>20161215110' summary_* \| wc -l

Sie können anstelle einer Variablen eine Funktion verwenden.

verwandte Informationen