8. 쉘 프로그래밍에서의 선택문은 case in 을 사용합니다.

안녕하세요. 언제나 휴일, 언휴예요.

이전 강의에서는 조건 표현이 참인지 거짓인지에 따라 수행하는 조건문을 살펴보았죠. 이번에는 특정 표현의 값에 따라 수행하는 선택문을 알아보아요.

 

특정 표현의 값에 따라 수행할 구문이 있을 때 if, elif를 이용할 수도 있어요. 하지만 case in 문을 사용하는 것이 효과적일 때가 많습니다.

 

case와 in 사이에 특정 변수 표현을 한 후에 특정 값과 닫는 괄호( ) )를 명시한 후에 수행할 구문을 작성합니다. 특정 값일 때 수행할 구문을 끝낼 때는 세미콜론을 두 개를 명시하세요. 명시하지 않은 모든 값일 때를 표현하는 것은 *) 입니다. 그리고 case in을 마무리할 때는 esac으로 닫습니다.

case 표현 in

    값 A)  표현의 값이 A일 때 수행할 구문 ;;

    값B)  표현의 값이 B일 때 수행할 구문 ;;

    …중략…

    *) 그 외의 값일 때 수행 구문 ;;

esac

 

다음은 수를 입력 받아 한글로 출력하는 예제입니다.

#casein_sh
#쉘 프로그래밍 실습
#선택문 (정수를 입력받아 한글로 출력)
#작성자 : eh. jang

echo 수를 입력:
read num

case $num in
    1) echo “하나” ;;
    2) echo “둘” ;;
    3) echo “셋” ;;
    *) echo “지원하지 않습니다.”;;
esac
[그림 1] case in 선택문
[그림 1] case in 선택문

다음은 두 개의 수를 입력받은 후에 연산을 선택하면 연산 결과를 출력하는 예제입니다.

#cal_sh
#쉘 프로그래밍 실습
#선택문(두 개의 수와 연산을 입력받아 결과 출력)
#작성자 : eh. jang
echo 첫 번째 수:
read num1

echo 두 번째 수:
read num2

echo "연산을 입력하세요.(1:더하기 2:빼기 3:곱하기 4:나누기 5:나머지):"
read op

case $op in
    1) echo "add:$((num1+num2))";;
	2) echo "sub:$((num1-num2))";;
	3) echo "mul:$((num1*num2))";;
	4) echo "div:$((num1/num2))";;
	5) echo "mod:$((num1%num2))";;
	*) echo "잘못 선택하였군요.";;
esac

다음은 실행 결과입니다.

첫 번째 수: 
2 
두 번째 수: 
3
연산을 입력하세요.(1:더하기 2:빼기 3:곱하기 4:나누기 5:나머지):
2
sub:-1


첫 번째 수:
2
두 번째 수:
3
연산을 입력하세요.(1:더하기 2:빼기 3:곱하기 4:나누기 5:나머지):
1
add:5


첫 번째 수:
2
두 번째 수:
3
연산을 입력하세요.(1:더하기 2:빼기 3:곱하기 4:나누기 5:나머지):
3
mul:6


첫 번째 수:
2
두 번째 수:
3
연산을 입력하세요.(1:더하기 2:빼기 3:곱하기 4:나누기 5:나머지):
4
div:0


첫 번째 수:
2
두 번째 수:
3
연산을 입력하세요.(1:더하기 2:빼기 3:곱하기 4:나누기 5:나머지):
5
mod:2


첫 번째 수:
2
두 번째 수:
3
연산을 입력하세요.(1:더하기 2:빼기 3:곱하기 4:나누기 5:나머지):
6
잘못 선택하였군요.