Fehler im Skript zum Zählen der Anzahl der Vorkommen

Fehler im Skript zum Zählen der Anzahl der Vorkommen
#!/bin/sh
count=1
while read line
do
  found=$( grep M $line )
  if [ "$found" ]; then
    echo $count")" $line >> filesave.txt
  fi
  count=$((count+1))
done < log1.txt

aber ich bekomme einen Fehler wie

./count.sh ./count.sh: syntax error at line 10: `found=$' unexpected

Antwort1

Das Problem ist eine Variablenreferenz ohne Anführungszeichen $linein

found=$( grep M $line )

und/oder

echo $count")" $line >> filesave.txt`

sollte in beiden Fällen $linein doppelte Anführungszeichen gesetzt werden:

found=$( grep M "$line" )
echo $count")" "$line" >> filesave.txt`

Das Beispiel verwendet die Zeilen von als Dateinamen, was möglicherweise nicht das ist, was Sie wollen. Wenn Sie jede gelesene Zeile von nach der Zeichenfolge log1.txtdurchsuchen möchten , können Sie Folgendes verwenden:log.txtM

found="$( echo "$line" | grep M )"

Danach $foundwäre $linenur noch gleich, wenn $lineder Buchstabe enthalten wäre M.

verwandte Informationen