발생 횟수를 계산하는 데 사용되는 스크립트의 버그

발생 횟수를 계산하는 데 사용되는 스크립트의 버그
#!/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$lineM

관련 정보