発生回数をカウントするスクリプトのエラー

発生回数をカウントするスクリプトのエラー
#!/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.txtM

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

この後、 は文字 が含まれている場合にのみ$found等しくなります。$line$lineM

関連情報