ошибка в скрипте для подсчета количества вхождений

ошибка в скрипте для подсчета количества вхождений
#!/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

но я получаю ошибку типа

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

решение1

Проблема заключается в ссылке на переменную без кавычек $lineв

found=$( grep M $line )

и/или

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

в обоих случаях $lineследует заключать в двойные кавычки:

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

В примере используются строки из log1.txtв качестве имен файлов, что может быть не тем, что вам нужно. Если вы хотите искать строку в каждой прочитанной строке log.txt, Mто вы можете использовать это:

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

После этого $foundбудет равно $lineтолько если $lineсодержит букву M.

Связанный контент