[Shell Script] 명령어 출력 결과를 파일명에 포함해서 그 파일명을 대상으로 명령어를 실행할 때 보기 쉽게 하기

명령어 출력 결과를 파일명에 포함해서 그 파일명을 대상으로 명령어를 실행할 때 보기 쉽게 하기 

명령어 치환처리를 끼워 넣고(네스트) 싶을 때 사용합니다.

#!/bin/sh
err_count=$(grep -c "ERROR" /var/log/myapp/$(hostname).log)   #1
echo "Error counts: $err_count"




해설

이 스크립트는 hostname 명령어로 파일명을 조합한 로그 파일에서 ERROR라는 문자열을 검색하여 일치한 줄을 표시합니다 . 검색과 카운터에는  grep 명령어 -c 옵션을 사용합니다 . 

예제에 사용되는 instance-1.log의 내용 









[ERROR] 가 두 개가 존재 합니다 따라서 결과에서 Error count 2를 반환합니다 . 






다음 예제에서 명령어 치환을 할 때 검색 대상 로그 파일이 다음과 같다고 가정합니다 . 

  • /var/log/myapp 디렉터리 안에 "서버명.log"라는 로그파일이 저장됩니다 . 
  • 서버 호스트 명은  instance-1 입니다 .