본문 바로가기

스터디/리눅스 커맨드라인

[리눅스] 31. case 분기

 

앞 장에서 선택된 항목을 식별하기 위해서 if 명령어를 연속으로 사용하였다. if 명령어와 유사하게 선택된 항목 다중 선택을 위한 프름 제어 기법이 여러 존재한다.
이번 장에서는 case 명령어에 대해 볼 것이다.

 

1. case

(1) case 문법
" case word in 
          [pattern [| pattern] ...) commands ;;] ... 
   esac"

read -p "Enter selection [0-3] >"

if [[ $REPLY =~ ^[0-3]$ ]]; then
     if  [[ $REPLY == 0 ]]; then
         pass
     fi
     if [[ $REPLY == 1 ]]; then
         pass
     fi
fi​
위는 if 명령어를 사용해서 케이스를 분류해놓은 것이다.

if 명령어를 case 명령어의 형태로 전환한 코드이다.
read -p "Enter selection [0-3] >"

case $REPLY in
    0) pass
       exit
       ;;
    1) pass
       exit
       ;;
       
esac​

(2) case 패턴 예제

  • a) : a와 일치하는 단어
    [[:alpha:]] : 하나의 알파벳 문자와 일치하는 단어
    ???) : 정확히 세 글자로 이루어진 단어
    *.txt) : .txt 문자열로 끝나는 단어
    *) : 모든 단어

(3) 패턴 결합
수직바를 구분자로 사용하여 여러 패턴들을 결합하여 사용하는 것도 가능하다. 이것은 OR 조건 패턴을 생성한다.

read -p "Enter selection [A, B, C or Q] > "

case $REPLY in
    q|Q   pass
          exit
          ;;
    a|A   pass
          exit
          ;;
esac

q or Q 즉, 소문자 대문자중 아무거나 입력 받아도 해당 분기점에서 실행이 된다.