로그 파일 줄 수를 세는 스크립트를 짜다가 이상한 걸 발견했어요. 분명 루프 안에서는 값이 올라가는데 루프 끝나고 출력하면 0이 나옵니다.


count=0
cat file | while read l; do
  count=$((count+1))
  echo "안: $count"
done
echo "밖: $count"


루프 안에서 찍는 "안:" 값은 1, 2, 3 이렇게 잘 올라가는데요. 정작 마지막 "밖:"은 그냥 0으로 초기값 그대로예요. 변수를 지운 것도 아닌데 도대체 왜 밖에서는 증가한 게 사라지는 건가요? 한참 들여다봤는데 감이 안 잡히네요. 파이프로 넘긴 게 문제인 것 같기도 한데 정확히 뭐 때문인지, 그리고 카운트를 루프 밖에서도 살아있게 하려면 어떻게 써야 하는지 알려주시면 감사하겠습니다.