[쉘스크립트] if 문

2016. 3. 26. 23:29쉘스크립트

변수들의 값을 서로 비교 할 때 If문을 사용하게 됩니다.

매번 사용할 때 마다 헷갈리곤 하는데 아래와 같이 사용하시면 됩니다.


# 기본 개념 / 형태

if [ conditions ]

then

   실행하고자 하는 문장

fi

 

#########

if [ conditions ]

then

   조건만족시 실행하고자 하는 문장

else

   조건 불만족시 실행하고자 하는 문장

fi

 

##########

if [ conditions ]

then

   조건만족시 실행하고자 하는 문장

elif [ conditions ]

then

   두번째 조건 만족시 실행 문장

else

   조건 불만족시 실행하고자 하는 문장

fi



# 예시

#!/bin/sh

num1=4

num2=20


# 특정 값인지 비교

if [ $num1 == "0" ]

then

 echo "num1 = 0"

elif [ $num1 == "4" ]

then 

 echo "num1 = 4"

else

 echo " ??????? "

fi


# 두개의 변수 값 비교

if [ $num1 -gt $num2 ]

then

 echo "num1 > num2"

else

 echo "num2 > num1"

fi


# 결과 형태


[root@testserver ~]# ./a.sh

num1 = 4

num2 > num1 


# if 문에서 사용되는 연산자


l         문자열체크

[ stringName ] - 문자열이 (NULL)인지 체크, Null 아니면 

[ -n stringName ] - 문자열의 사이즈가 0 이상인지 체크, 0 이상이면 

[ -z stringName ] - 문자열의 사이즈가 0 인지 체크, 0이면 

[ stringNameA = stringNameB ] - A문자열과 B문자열이 같은지 체크같으면 

[ stringNameA != stringNameB ] - A문자열과 B문자열이 다른지 체크다르면 

 

l         숫자 대소 관계 체크

[ intA -ge 100 ] - 숫자 A 100보다 크거나 같은지 체크, 100 이상이면 

[ intA -gt 100 ] - 숫자 A 100보다 큰지 체크, 100 넘으면 

[ intA -le 100 ] - 숫자 A 100보다 작거나 같은지 체크, 100 이하이면 

[ intA -lt 100 ] - 숫자 A 100보자 작은지 체크, 100 미만이면 

 

l         파일 체크

[ -r filename ] - 해당 파일이 읽기 가능한지 체크

[ -w filename ] - 해당 파일이 쓰기 가능한지 체크

[ -x filename ] - 해당 파일이 실행 가능한지 체크

[ -s filename ] - 해당 파일의 사이즈가 제로 이상인지 체크

[ -d filename ] - 해당 파일이 디렉토리 파일인지 체크

[ -f filename ] - 해당 파일이 보통 파일인지 체크

[ -h filename ] - 해당 파일이 링크 파일인지 체크

 

l         조건문의 결합

조건문A -a 조건문B ] - 조건문 A B 모두 참인지 체크, -a AND

조건문A -o 조건문B ] - 조건문 A B 참이 하나라도 있는지 체크, -o OR