[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문을 사용해 쉽게 쉘 스크립트를 사용할 수 있습니다.
'IT > 리눅스 쉘 스크립트' 카테고리의 다른 글
[shell script] 쉘 스크립트 기초 #9 - 제어문 while문 설명 및 예제 (45) | 2022.07.16 |
---|---|
[shell script] 쉘 스크립트 기초 #8 - 제어문 select문 설명 및 예제 (43) | 2022.06.16 |
[shell script] 쉘 스크립트 기초 #6 - 반복문 for문 개념 및 사용법 (0) | 2022.05.10 |
[shell script] 쉘 스크립트 기초 #5 - 조건문 if문 옵션 사용법 및 총정리 (0) | 2022.04.27 |
[shell script] 쉘 스크립트 기초 #4 - 조건문 if문 개념 규칙 및 문법 (0) | 2022.04.26 |
댓글