erro no script para contagem de número de ocorrências

erro no script para contagem de número de ocorrências
#!/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

mas estou recebendo um erro como

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

Responder1

O problema é a referência de variável sem aspas $lineem qualquer

found=$( grep M $line )

e/ou

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

em ambos os casos $linedevem estar entre aspas duplas:

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

O exemplo usa as linhas de log1.txtcomo nomes de arquivos, o que pode não ser o que você deseja. Se você quiser pesquisar cada linha lida log.txtpela string M, você pode usar isto:

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

Depois disso, $foundseria igual $lineapenas se $linecontivesse a letra M.

informação relacionada