본문 바로가기
IT/리눅스 쉘 스크립트

[shell script] 쉘 스크립트 기초 #7 - 제어문 case문 설명 및 예제

by 꾸꾸웍스 2022. 6. 12.
반응형

 


[shell script] 쉘 스크립트 기초 #7 - 제어문 case문 설명 및 예제


 

 

 

 

※ 목차

1. 쉘 스크립트 case문 설명
2. 쉘 스크립트 case문 문법
3. 쉘 스크립트 case문 기본 예제
4. 쉘 스크립트 case문 예제 응용

 

 

 

1. 쉘 스크립트 case문 설명

 

case는 영어 해석 그대로 특정한 상황의 경우를 뜻합니다. 즉, 정해진 경우에 따라 case문이 수행하게 됩니다. if문을 이용하여 여러 가지의 조건을 할 수 있지만 스크립트 내용이 길어질 뿐만 아니라 코딩을 한 줄 한 줄 수행하다 보면 수행 시간이 길어질 수 있습니다. 따라서 제어문 case문은 입력된 경우의 변수에 따라서 주어진 행동을 수행합니다.

 

 

 

2. 쉘 스크립트 case문 문법

 

 

case문 시작은 case {변수} in 으로 시작하고 case문 종료는 esac로 case를 거꾸로 작성하여 종료합니다. expression에 변수에 따라 pattern1과 pattern2가 같으면 각 statements의 명령어를 실행하고 statements의 명령줄 종료는 세미콜론(;)으로 종료합니다.

 

 

 

3. 쉘 스크립트 case문 기본 예제

 

#!/bin/bash

A="apple"

case $A in
     apple)
              echo "This is apple"
              ;;
     banana)
               echo "This is banana"
               ;;
esac

 

 

A변수에 apple라는 값을 넣어주면 case문에 $A 즉 expression 값이 apple이기 때문에 pattern1의 apple에서 조건을 만족시켜 This is apple을 출력하게 됩니다. 반대로 A변수에 apple이 아닌 banana가 들어가 pattern2의 banana 조건을 만족시켜 This is banana가 출력되게 됩니다. $A의 값이 apple와 banana가 아니면 아무런 동작을 하지 않고 case문은 종료됩니다.

 


 

반응형

 


 

 

4. 쉘스크립트 case문 응용 문법

 

파이프와 와일드카드 사용

#!/bin/bash

A="melon"

case $A in
   apple | banana)
               echo "This is fruit"
                   ;;
    carrot | cabbage)
                echo "This is vegetable"
                    ;;
  *)
    echo "Neither vegetable nor fruit"
         ;;
esac

 

 

위 예시는 pattern에 파이프 ' | '를 이용해 패턴을 2개를 사용했습니다. 패턴은 꼭 한 개가 아니어도 되며 여러 개의 패턴을 사용할 때는 파이프를 이용해 구분하고 그중 하나와 일치해도 됩니다. 또한 3번째 패턴 ' *) ' 의 의미는 apple, banana, carrot, cabbage의 패턴이 아닌 모든 값이 이 3번째 패턴으로 가게 됩니다. 위 기본 예제에서는 *) 이것의 패턴을 해주지 않았기 때문에 apple과 banana가 아니면 아무런 동작을 하지 않았지만 이 해당 예제는 apple, banana, carrot, cabbage 이 4가지의 패턴이 아니면 Neither vegetable nor fruit를 출력하게 됩니다.

 

 

 

위치 매개변수 활용

 

 

위 사진처럼 위치 매개변수(아규먼트)로 case문을 활용할 수 있습니다. 스크립트명은 $0을 나타내고 나머지 $1, $2, $3 .... 은 계속 올 수 있는데 이것을 $# 로 정의할 수 있습니다. 아래 예시는 $A변수에 $1 즉, 첫 번째 아규먼트를 활용하여 첫번째 아규먼트 경우에 따라 작동하는 case문의 예시입니다. 

 

 

#!/bin/bash

A=$1

case $A in
   apple | banana)
                echo "This is fruit"
                ;;
   carrot | cabbage)
                echo "This is vegetable"
                ;;
   *)
     echo "Neither vegetable nor fruit"
       ;;
esac

 

 

위 사진과 같이 첫 번째 아규먼트 $1을 A변수에 담고 스크립트 옆에 apple, cabbage, melon 경우에 따라 다르게 출력되는 것을 볼 수 있습니다. 

 

 


 

쉘 스크립트 case문은 활용방법에 따라 지금 보다 더 다양하지만 기본적인 동작방법에 대해 이해를 하면 실무에서 쉽게 사용할 만큼 기본에서 많이 사용될 수 있습니다. 경우의 수가 1개 또는 2개 정도이면 if, else정도를 사용하면 되지만 특정한 경우에 따라 경우에 수가 많으면 case문을 사용해 쉽게 쉘 스크립트를 사용할 수 있습니다.

 


 

 


 


 

반응형
그리드형

댓글