리눅스 셸 스크립트: Case 문과 패턴 매칭 사용
리눅스 셸 스크립트에서 case 문은 다양한 조건에 따라 다른 명령을 실행할 수 있는 유연한 방법을 제공합니다. 이 글에서는 case 문의 기본 구조와 함께 패턴 매칭을 활용하는 방법을 알아보겠습니다.
☞ 포스트 기준: 리눅스 배포판 CentOS 7
1. Case 문의 기본 구조
case 문은 다음과 같은 기본 구조를 가집니다.
case 변수 in
패턴1)
# 명령1 ;;
패턴2)
# 명령2 ;;
*)
# 기본 명령 ;;
esac여기서 변수는 평가할 값이며, 패턴1, 패턴2 등은 일치하는 조건을 나타냅니다. 각 패턴에 따라 실행할 명령을 지정할 수 있습니다. 각 명령은 ‘;;’ (두 개의 세미콜론)으로 끝나야 합니다.
2. 패턴 매칭 활용
Case 문은 간단한 문자열 비교부터 복잡한 패턴 매칭까지 다양한 형태로 활용할 수 있습니다.
case $variable in
[a-z]*)
echo "소문자로 시작합니다." ;;
[A-Z]*)
echo "대문자로 시작합니다." ;;
[0-9]*)
echo "숫자로 시작합니다." ;;
*)
echo "알 수 없는 형식입니다." ;;
esac이 예제에서는 입력된 변수의 첫 글자에 따라 다른 메시지를 출력합니다.
3. 복잡한 패턴과 조건 조합
Case 문은 복잡한 패턴과 여러 조건의 조합도 지원합니다.
case $input in
[a-z] | [A-Z])
echo "알파벳입니다." ;;
?)
echo "한 글자입니다." ;;
*.txt)
echo "텍스트 파일입니다." ;;
*)
echo "다른 형식입니다." ;;
esac이 예제에서는 다양한 패턴을 조합하여 더 세밀한 조건을 처리합니다.
사용 예제
#!/bin/bash
echo "사용자에게 입력을 요청합니다."
echo "1, 2, 3 중 하나의 숫자를 입력하세요: "
read number
case $number in
1)
echo "입력한 숫자는 1입니다."
;;
2)
echo "입력한 숫자는 2입니다."
;;
3)
echo "입력한 숫자는 3입니다."
;;
*)
echo "잘못된 입력입니다. 1, 2, 또는 3 중 하나를 입력해야 합니다."
;;
esac이 스크립트는 사용자로부터 숫자를 입력받고, 그 숫자에 따라 다른 메시지를 출력합니다. 입력된 숫자가 1, 2, 또는 3이 아닌 경우에는 “잘못된 입력” 메시지를 출력합니다.

관련 이전 게시글
- 리눅스 명령어 도움말 및 매뉴얼 확인하기: –help, man, info
- 리눅스 grep 명령어: 파일 내에서 문자열 검색 및 패턴 찾기
- 리눅스 find 명령어: 파일 검색 및 고급 사용
- 리눅스 셸 스크립트: 변수 생성 및 사용하기
- 리눅스 셸 스크립트: if 문 사용법과 다양한 비교 방법
다음 글에서도 셸 스크립트에 대해 알아볼 예정입니다. 도움이 되셨다면 공유해 주세요!



