![발생 횟수를 계산하는 스크립트에 오류가 있습니다.](https://rvso.com/image/76676/%EB%B0%9C%EC%83%9D%20%ED%9A%9F%EC%88%98%EB%A5%BC%20%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%20%EC%98%A4%EB%A5%98%EA%B0%80%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
#!/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`
이 예에서는 from 행을 log1.txt
파일 이름으로 사용하는데 이는 원하는 것과 다를 수 있습니다. log.txt
string 에 대해 읽은 각 줄을 검색하려면 M
다음을 사용할 수 있습니다.
found="$( echo "$line" | grep M )"
그 이후에는 문자가 포함된 경우에만 $found
동일합니다 .$line
$line
M