루프 내에서 Grep 명령 실행 시 오류 발생

루프 내에서 Grep 명령 실행 시 오류 발생

사용자가 제공한 시간 프레임을 기반으로 로그 파일 집합의 줄 수를 계산하는 작은 프로그램을 만들려고 합니다. 현재 마지막 단계에 있으며 프로그램을 실행할 때 어떤 이유로 실패하고 아래 오류가 발생합니다. grep: |: 해당 파일 또는 디렉터리가 없습니다. grep: wc: 해당 파일 또는 디렉터리가 없습니다.

실행은 아래 코드의 6번째 줄에서 발생합니다. 7행에는 내가 실행하려는 샘플 명령이 나와 있습니다. 6행을 주석 처리하고 7행의 주석 처리를 제거하면 실행됩니다. 간단한 것이 빠졌을 수도 있습니다. 당신의 도움을 주셔서 감사합니다. 해당 변수의 값은 다음과 같습니다.

fileName="' 요약_* | wc -l" command="grep '" comm=ived>20161215110

1 for (( z=0; z<($interval/10); z++ ))
2 do
3       comm=$tempCommand$count
4       let "count = $count + 1"                                
5       #echo "$command$comm$fileName"
6       totalCount=`$command$comm$fileName`
7       #totalCount=`grep 'ived>20161215110' summary_* | wc -l`
8       echo $totalCount
9 done

답변1

쉘은 |구문 분석이 시작될 때 메타 문자를 인식합니다. 변수 값을 확장할 때 이미 너무 늦었으므로 |문자 그대로 수직 막대처럼 동작합니다. 즉, 다음을 실행한 것처럼 동작합니다.

grep 'ived>20161215110' summary_* \| wc -l

변수 대신 함수를 사용할 수 있습니다.

관련 정보