강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

손병수님의 프로필 이미지
손병수

작성한 질문수

시스템엔지니어가 알려주는 리눅스 기초편 Bash Shell Script

기초편을 마치며

df_chk.awk에 질문드립니다.

작성

·

267

0

훌륭한 강의준비 해주셔서 감사합니다. 이제 다 보고 

다음 강의로 넘어 갈려고 하는데 하나 궁금한점이 있어서 질문드립니다.

df_chk.awk 파일에서 

만약 df스토리지 가 read로 입력 받는 값보다 PER가 크면 출력 되도록 작성하고싶은데..

if ( PER > (사용자가 입력하는값넣기)) MNT=$6

위처럼 조건을 만들고싶은데 

사용자가 입력하는값에다가 변수를 만들어서 등록하는방법이 있을까요??

답변 1

1

안녕하세요 병수님!

if ( PER > (사용자가 입력하는값넣기)) MNT=$6

이런 식으로 활용할 수 있습니다. 

쉘스크립트 내부의 변수 또는 실행시 입력한 값을 awk에서 변수로 활용할 수 있는 지가 관건인데요.

awk의 -v 옵션을 사용하면 외부의 변수를 awk 내부에서 활용할 수 있습니다. 

사용 방법은 아래와 같습니다. 여기에서 $1은 쉘 스크립트를 실행할 때 넣은 첫번째 항목입니다.

awk -v AWK에서사용할변수명=$1 '.....AWK명령...'

실행할 때 입력한 숫자를 NUM이라는 변수에 넣어서 처리한다고 하면 아래처럼 되겠지요.

df -h | awk -v NUM=$1 '.....생략....; if ( PER > NUM ) MNT=$6;....생략....

이제 아래처럼 스크립트를 실행하면 사용량이 50%이상인 파티션을 출력할 수 있습니다. 

df_chk.sh 50

:) 도움이 되셨을까요?

손병수님의 프로필 이미지
손병수

작성한 질문수

질문하기