5. case문
(1) 기본 사용법 및 예제
case 변수 in
경우1)
~
;;
경우2)
~
;;
경우3)
~
;;
...
case문의 사용법은 아주 간단합니다.
shell script를 아무 생각없이 코딩하다 보면 무수히 많은 if문을 남발하게 되고 소스 자체가 지저분해 보이게 되는데 이 때 이 case문만 적절히 사용할 줄 알아도 훨씬 심플하고 보기 좋은 shell script를 작성할 수 있습니다.
그럼 바로 예제문을 통해 설명 드리겠습니다.
먼저 동일한 결과를 보여주는 if문부터 보도록 하겠습니다.
tmpSize=`df -g /tmp | grep tmp | awk '{print $3}' | cut -d '.' -f 1`
echo 'The size of /tmp filesystem '${tmpSize}' GB'
if [ ${tmpSize} -eq 0 ]; then
chfs -a size=+2G /tmp
echo 'The size of /tmp filesystem is increased 2GB.'
elif [ ${tmpSize} -eq 1 ]; then
chfs -a size=+1G /tmp
echo 'The size of /tmp filesystem is increased 1GB.'
else
echo 'The size of /tmp filesystem is equal or greater than 2GB.'
fi
예문이 짧아서 if문이나 case문이나 별차이 없어 보이기도 합니다만, 그래도 아래 case문이 더 깔끔해 보이지 않나요?;;;;
echo 'The size of /tmp filesystem '${tmpSize}' GB'
case ${tmpSize} in
0)
chfs -a size=+2G /tmp
echo 'The size of /tmp filesystem is increased 2GB.'
;;
1)
chfs -a size=+1G /tmp
echo 'The size of /tmp filesystem is increased 1GB.'
;;
*)
echo 'The size of /tmp filesystem is equal or greater than 2GB.'
;;
esac
위 예제는 AIX에서 /tmp 파일시스템의 사용 가능 용량(free size)에 비추어 파일시스템 크기를 2GB 이상으로 늘려주려는 case문 예제입니다.
먼저 첫 번째줄의 명령 구문은 /tmp 파일시스템의 정보를 GB 단위로 가져온 후(df -g /tmp), 제일 윗 줄의 불필요한 row 부분을 제거하고(grep tmp), 세 번째 컬럼인 Free size 정보만 뽑아낸 다음(awk '{print $3}'), 소수점 이하 자리는 제외하고 정수 부분의 값만 가져오겠다(cut -d '.' -f 1)는 뜻입니다.
<참조 - AIX 에서의 df 명령 실행 결과 화면>
위 화면과 같은 상황에서 첫 번째 명령구문을 실행하였다면 output으로 '1'을 반환하겠죠?
그렇다면 case문의 ${tmpSize} 변수값에 '1'이 넘어갈 것이고 변수가 '1'일 경우에 실행되는 구문인 'chfs -a size=+1G /tmp' 가 실행될 것입니다.
case문에 보이는 '*'(asterisk) 같은 경우는 if문의 else와 같은 용도라고 보시면 되는데요.
위 예제에 비추어 설명 드리자면, ${tmpSize} 변수값이 0도 아니고 1도 아닐 경우엔 별다른 명령문 수행없이 echo문만 수행하겠다는 내용이지요.
아주 간단하죠?
이상 case문에 대한 기본 사용법 및 예제에 대해서 말씀 드렸습니다.
'3. OS이야기 > 03. Shell Script' 카테고리의 다른 글
[UNIX/LINUX] Shell Script - sed 명령을 이용한 new line <-> 특정 문자열 (2) (1) | 2014.05.07 |
---|---|
[UNIX/LINUX] Shell Script - sed 명령을 이용한 new line <-> 특정 문자열 (1) (0) | 2014.05.07 |
[UNIX/LINUX] Shell Script 기본 - 4.while문 (1) 기본 사용법 및 예제 (0) | 2014.05.02 |
[UNIX/LINUX] Shell Script 기본 - 3.for문 (2) 예제 (0) | 2014.04.29 |
[UNIX/LINUX] Shell Script 기본 - 3.for문 (1) 기본 사용법 (0) | 2014.04.28 |