Linux의 Bash shell script의 Case 조건문에 대해서 알아보겠습니다. Case는 다른 언어의 Switch-Case와 같은 문법입니다.
1. Syntax
Case의 문법은 다음과 같습니다.
case expression in
pattern_1)
statements
;;
pattern_2)
statements
;;
pattern_3|pattern_4|pattern_5)
statements
;;
*)
statements
;;
esac
expression
와 일치하는pattern)
가 있다면, 그 블럭의 statements가 수행됩니다.pattern_3|pattern_4)
와 같이|
연산자를 이용하여 다수의 조건을 하나의 패턴에 적용할 수 있습니다.- 조건에 일치하지 않는 항목들은
*)
에서 처리되도록 만들 수 있습니다. Java의default
와 같습니다.
2. Case를 사용하는 예제 (1)
다음과 같이 Case를 이용하여 var에 해당하는 조건문을 수행할 수 있습니다.
#!/bin/bash
var=1
case $var in
1)
echo "Apple"
;;
2)
echo "Grape"
;;
3)
echo "Kiwi"
;;
esac
Output:
$ bash example.sh
Apple
3. Case를 사용하는 예제 (2)
다음은 User Input을 받아 특정 문자열을 출력합니다. 여러 조건을 하나의 패턴에 추가하였고, 일치하는 패턴이 없을 때는 *)
에서 처리하도록 했습니다.
#!/bin/bash
read -p "Yes or No? : " Answer
case $Answer in
Yes|yes|y|Y)
echo "You typed 'Yes'"
;;
No|no|N|n)
echo "You typed 'No'"
;;
*)
echo "Invalid answer"
esac
Output:
$ bash example.sh
Yes or No? : Y
You typed 'Yes'
$ bash example.sh
Yes or No? : No
You typed 'No'
$ bash example.sh
Yes or No? : NO
Invalid answer
4. Case를 사용하는 예제 (3)
다음은 정규표현식 같은 패턴을 사용하는 예제입니다.
#!/bin/bash
read -p "Type something : " Answer
case $Answer in
a?)
echo "a? pattern"
;;
b*)
echo "b* pattern"
;;
c[def])
echo "cd | ce | cf"
;;
*)
echo "Invalid answer"
;;
esac
?
: 어떤 문자 1개를 의미합니다.a?
패턴은 a로 시작하고 뒤에 어떤 문자 1개가 있을 때 일치한다고 판단합니다.*
: 1개 이상의 어떤 문자들을 의미합니다.a*
패턴은 a로 시작하고 뒤에 1개 이상의 문자들이 있을 때 일치한다고 판단합니다.[abc]
:[abc]
는 문자 a 또는 b 또는 c 중에 하나를 의미합니다.a[bc]
패턴은ab
,ac
와 일치한다고 판단합니다.
위 코드의 실행결과를 보시면 이해가 빠릅니다.
$ bash example.sh
Type something : a
Invalid answer
$ bash example.sh
Type something : a1
a? pattern
$ bash example.sh
Type something : a22
Invalid answer
$ bash example.sh
Type something : bbaabbaa
b* pattern
$ bash example.sh
Type something : cd
cd | ce | cf
$ bash example.sh
Type something : cdd
Invalid answer
Loading script...
Related Posts
- Bash Shell - 문자열에서 마지막 문자 N개 제거
- Bash Shell - 문자열에서 첫번째 문자 N개 제거
- Bash Shell - 실행 시간 측정 방법
- Bash Shell - 나눗셈에서 버림, 올림, 반올림 처리
- Bash Shell - 숫자가 양수인지 음수인지 확인하는 방법
- Bash Shell - 자신의 스크립트 파일 이름 가져오기
- Bash Shell - 문자열 출력 방법(echo, printf)
- Bash Shell - seq 명령어로 반복문 구현 및 예제
- Bash Shell - File 테스트 연산자
- Bash Shell - 무한 루프 (Infinite loop)
- Bash Shell - 숫자 비교 연산자
- Bash Shell - 문자열 비교 연산자
- Bash Shell - 대문자, 소문자로 변환 (Uppercase, Lowercase)
- Bash Shell - 스트립트를 root로 실행했는지 확인
- Bash Shell - 명령어 실행 결과를 변수에 저장
- Bash Shell - select로 선택 메뉴 구현
- Bash Shell - 변수가 정의되었는지 확인하는 방법
- Bash Shell - sleep 함수, 특정 시간 멈추기
- Bash Shell - 파일이 존재하는지 확인
- Bash Shell - 문자열 자르기 (substring, split)
- Bash Shell - 날짜, 시간 가져오기
- Bash Shell - Case 조건문
- Bash Shell - 파일 읽는 방법
- Bash Shell - 사용자로부터 입력 받기
- Bash Shell - 문자열을 연결하는 방법
- Bash Shell - 파일 생성 및 문자열 추가
- Bash Shell - 숫자 변수 증가/감소 시키기
- Bash Shell - 배열 할당, 길이, 객체 포함 여부 확인
- Bash Shell - 문자열 비교, 문자열 포함 여부 확인
- Bash Shell - 변수 선언, 할당
- Bash Shell - 조건문(if-else)
- Bash Shell - 숫자 연산 (더하기, 빼기, 곱하기, 나누기)
- Bash Shell - 반복문(for, while, until loop)
- Bash Shell - Command Line으로 전달된 인자 받기
- Bash Shell - 함수(Function)