본문 바로가기
Back-end/Script

[Shell] 조건문 - IF, CASE IN

by 허도치 2020. 2. 6.

1. 조건식.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-z 문자열 ]: 문자열의 길이가 0인지 비교
-n 문자열 ]: 문자열의 길이가 0이 아닌지 비교
 
[ 문자열1 == 문자열2 ]: 문자열이 같은지 비교
[ 문자열1 != 문자열2 ]: 문자열이 다른지 비교
 
[ 값1 -eq 값2 ]: 두 값이 같은지 비교
[ 값1 -ne 값2 ]: 두 값이 다른지 비교
[ 값1 -gt 값2 ]: 값1 > 값2
[ 값1 -ge 값2 ]: 값1 >= 값2
[ 값1 -lt 값2 ]: 값1 < 값2
[ 값1 -le 값2 ]: 값1 <= 값2
 
-e 파일 ]: 파일인지 확인
-d 파일 ]: 파일이 디렉토리인지 확인
-L 파일 ]: 파일이 심볼릭 링크인지 확인
-r 파일 ]: 읽기 가능한 파일인지 확인
-w 파일 ]: 쓰기 가능한 파일인지 확인
-x 파일 ]: 실행 가능한 파일인지 확인
-s 파일 ]: 파일의 크기 0보다 큰지 확인
 
[ 파일1 -nt 파일2 ]: 파일1이 파일2보다 최신 파일인지 확인
[ 파일1 -ot 파일2 ]: 파일1이 파일2보다 이전 파일인지 확인
[ 파일1 -ef 파일2 ]: 파일1과 파일2가 같은 파일인지 확인
 
[ 조건식1 -a 조건식2 ]: AND 연산
[ 조건식1 -o 조건식2 ]: OR 연산
cs

 

 

2. IF문.

   2-1. 문법.

1
2
3
4
5
6
7
8
if [ 조건식1 ]; then
    # to something...
elif [ 조건식2 ]; then
    # to something...
else
    # to something...
fi
 
cs

 

   2-2. IF~ELSE 예제.

1
2
3
4
5
6
7
8
9
10
11
12
13
# 문자열비교 
if [ 'ABCDE' == 'abcde' ]; then
    echo '같은 문자열입니다.'
else
    echo '다른 문자열입니다.'
fi
 
# 수치비교 
if [ 1 -gt 2 ]; then
    echo '1은 2보다 큽니다.'
else
    echo '1은 2보다 작거나 같습니다.'
fi
cs

 

   2-3. 중첩IF 예제.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 수치비교 
num1=10
num2=20
if [ -z $num1 --z $num2 ]; then
    echo 'num1 또는 num2가 0입니다.'
elif [ -n $num1 --n $num2 ]; then
    echo 'num1과 num2는 0이 아닙니다.'
    if [ $num1 -eq $num2 ]; then
        echo 'num1과 num2는 같습니다.'
    elif [ $num1 -gt $num2 ]; then
        echo 'num1은 num2보다 큽니다.'
    elif [ $num1 -lt $num2 ]; then
        echo 'num1은 num2보다 작습니다.'
    else
        echo '일치하는 조건이 없습니다.'
    fi
fi
cs

 

 

3. CASE IN문

   3-1. 문법.

1
2
3
4
5
6
7
8
9
10
11
12
case 기준값 in
    비교값1 )
        #do someting...
        ;;
    비교값2 )
        #do someting...
        ;;
    * )
        #default
        #do something...
        ;;
esac
cs

 

   3-2. 기본 예제.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
text='yyyyYYYyy'
case $text in
    1
        echo '숫자 비교'
        ;;
    'n')
        echo '문자 비교'
        ;;
    'string')
        echo '문자열 비교'
        ;;
    [yY]*)
        echo '표현식 비교'
        echo '[yY]*: y 또는 Y가 한개 이상일 때'
        ;;
    * )
        echo '기본값'
        ;;
esac
cs

 

   3-3. 활용 예제.

         - Y/N을 입력받아 터미널을 총료.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#CASE IN
read -'종료하시겠습니까(Y/N)?' kill_yn
case $kill_yn in
    'Y')
        echo '3초 뒤에 터미널을 종료합니다.'
        sleep 3s
        exit;
        ;;
    'N')
        echo '종료를 취소합니다.'
        ;;
    *)
        echo "${kill_yn}은 사용할 수 없습니다."
        ;;
esac
cs

 

 

 

 

'Back-end > Script' 카테고리의 다른 글

[Shell] 자주사용하는 명령어 정리  (0) 2020.02.10
[Shell] Arguments 사용하기  (0) 2020.02.06
[Shell] 알파벳 대소문자 변경  (0) 2020.02.06

댓글