posted by 귀염둥이채원 2021. 4. 15. 08:10

 

---------------------------------------------------------

# Syntax of while case:

---------------------------------------------------------

* case 문은 "case"로 시작하고 "esac"로 끝납니다.

* ")"는 패턴을 종료하는 데 사용됩니다.

* 명령이 있는 패턴은 절이라고하며 모든 절은 (;;)로 끝납니다.

* 별표 기호 *를 사용하여 기본 대소 문자를 정의 할 수 있습니다.

* case 문은 먼저 입력된 $ ariable을 다른 패턴과 일치시킵니다.

패턴이 일치하면 이중 세미콜론 (;;)까지 해당하는 명령 집합이 실행됩니다.

* 정규식을 지원하며 | 기호로 다중 값을 입력 가능하며 조건의 문장 끝에는 ;; 기호로 끝을 표시한다

* 대문자와 소문자는 구별한다.

 

case $variable in

pattern-1)

commands

;;

pattern-2)

commands

;;

pattern-3)

commands

;;

pattern-N)

commands

;;

*)

commands

;;

esac



조건에 다중 값을 사용하고 싶다면 "|" 연산자를 사용한다.

case $variable in

pattern-1 | pattern-2)

commands

....

....

;;

pattern-3 | pattern-4)

commands

....

....

;;

 

---------------------------------------------------------

# 월 이름이 일치하면 해당 월의 해당 이벤트를 표시

---------------------------------------------------------

* "shopt -s nocasematch"는 대소 문자에 관계없이 패턴을 일치시키는 데 사용됩니다.

 

#!/bin/bash

 

shopt -s nocasematch

printf "Enter name of the month: "

read month

 

case $month in

January)

echo " 24th January international Day of Education."

;;

February)

echo " 20 FebruaryWorld Day of Social Justice ."

;;

March)

echo "8th March International women’s day."

;;

April)

echo "7th April The World Health Day"

;;

*)

echo "No matching information found"

;;

esac

 

# output

$ bash test.sh

Enter name of the month: February

20 FebruaryWorld Day of Social Justice

 

$ bash test.sh

Enter name of the month: April

7th April The World Health Day

 

$ bash test.sh

Enter name of the month: april

7th April The World Health Day

 

$ bash test.sh

Enter name of the month: Undefine

No matching information found

 

---------------------------------------------------------

# 국가에 수도 출력

---------------------------------------------------------

#!/bin/bash

shopt -s nocasematch

echo -n "Enter the name of a country: "

read country

 

echo -n "The capital of $country is "

case $country in

UK | "United Kingdom")

echo -n "London"

;;

Turkey)

echo -n "Ankara"

;;

USA)

echo -n "Washington DC"

;;

*)

echo -n "Information not available"

;;

esac

echo ""

 

# output

$ bash test.sh

Enter the name of a country: USA

The capital of USA is Washington DC

 

---------------------------------------------------------

# case문 테스트를 위한 반복문

---------------------------------------------------------

#!/bin/bash

for string in "HELLO" "WORLD" "hello" "world" "s" "start" "end" "etc"; do

 

# case문 시작

case ${string} in

hello | HELLO)

echo "${string}: hello 일때"

;;

wo*)

echo "${string}: wo로 시작하는 단어 일때"

;;

s | start)

echo "${string}: s 혹은 start 일때"

;;

e | end)

echo "${string}: e 혹은 end 일때"

;;

*)

echo "${string}: 기타"

;;

esac

# //case문 끝

 

done

 

# output

$ bash test.sh

HELLO: hello 일때

WORLD: 기타

hello: hello 일때

world: wo로 시작하는 단어 일때

s: s 혹은 start 일때

start: s 혹은 start 일때

end: e 혹은 end 일때

etc: 기타

 

---------------------------------------------------------

# 참고 사이트

---------------------------------------------------------

https://blog.gaerae.com/2015/01/bash-hello-world.html