用于计算出现次数的脚本中的错误

用于计算出现次数的脚本中的错误
#!/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.txtstring M,那么您可以使用以下命令:

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

此后,仅当包含字母时才$found等于。$line$lineM

相关内容