쉘 스크립트

[쉘 스크립트] if문 / switch-case문

whiporithm 2023. 10. 9. 00:26

 


if 문

쉘 스크립트에서도 프로그래밍에서 일반적으로 사용하는 if문을 사용할 수 있다. 문법은 아래와 같다.

 

if [ 조건식 ]
then
    수행문
elif [ 조건식 ]
then
    수행문
else
    수행문
fi

 

시작은 if로, 그 끝은 fi로 표기한다.

조건은 대괄호 안에 넣으며, 대괄호와 조건식 사이에는 한 칸의 공백을 두어야 한다.

elif 나 else는 필요에 따라 작성하면 된다.

 

1) if [ $변수 연산자 $변수 ]

가장 일반적인 형태로, 변수끼리 비교해서 결괏값에 따라 분기를 준다.

 

#!/bin/bash

val1 = 10
val2 = 20

if [ $val1 = $val2 ] # 비교시에 '==' 가 아니라 '=' 임을 유의하자.
then
    echo True
else
    echo False
fi

 

2) if [ $변수 연산자 조건값 ]

앞에 변수가 들어가고, 조건값에 따라 분기를 나눈다.

 

#!/bin/bash

val = "Korea"

if [ $val = "America" ]
then
    echo True
else
    echo False
fi

 

3) if [ 연산자 $변수 ]

2번과는 반대로 앞에 연산자가 들어가고 뒤에 변수가 들어간다. 연산자는 주로 리눅스 명령어를 많이 사용하는 거 같다.

 

#!/bin/bash

val=""

if [ -z $val ] # -z는 변수에 저장된 값의 길이가 0이면 True를 return 한다.
then
    echo True
else
    echo False
fi

 

4) if [ 조건식 ] 연산자[ 조건식 ]

위 식은 AND 나 OR과 같은 논리 연산자로 여러개의 조건식을 합쳐 조건을 만들고 싶을때 사용된다.

 

#!/bin/bash

val=5

if [ $val -gt 0 ] && [ $val -lt 10 ] # -gt는 더 큰지 검사, -lt는 더 작은지 검사하는 명령어이다.
then
    echo True
else
    echo False
fi

 

switch-case 문

if문의 분기가 많아지면 switch를 쓰기도 하는데 쉘 스크립트에서도 이를 지원한다. 기본 문법과 예제는 아래와 같다.

 

case $변수 in
    조건값)
    수행문
    ;;
    조건값)
    수행문
    ;;
    *)      # *) default를 의미한다. 조건에 맞는 값이 없을때 이쪽으로 빠진다.
    수행문
esac

 

#!/bin/bash

case $1 in
    start)
    echo "this is start"
    ;;
    stop)
    echo "this is stop"
    ;;
    restart)
    echo "this is restart"
    ;;
    *)
    echo "nothing"
esac

 

# 위 내용은 "처음배우는 쉘 스크립트" 를 공부하고 정리한 내용입니다.