사용자가 제공한 시간 범위를 기반으로 로그 파일 집합의 줄 수를 계산하는 작은 프로그램을 만들려고 합니다. 현재 마지막 단계에 있으며 어떤 이유로 프로그램을 실행할 때 다음 오류와 함께 실패합니다. grep: |: 해당 파일 또는 디렉터리가 없습니다. grep: wc: 해당 파일 또는 디렉터리가 없습니다.
실행은 아래 코드의 6번째 줄에서 발생합니다. 7행에는 제가 실행하려고 시도한 샘플 명령이 나와 있습니다. 6행을 주석 처리하고 7행의 주석 처리를 제거하면 실행됩니다. 간단한 것이 빠졌을 수도 있습니다. 도움을 주셔서 감사합니다. 이들 변수의 값은 다음과 같다
filename="'summary_* | 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
변수 대신 함수를 사용할 수 있습니다.