Shell Script (6): 조건 부 분기 문 2
이 글 은 케이스 조건 의 분기 문 구 를 설명 한다.다 중 분기 조건 판정 장면 에 서 는 if 조건 분기 문 구 를 사용 하여 스 크 립 트 를 작성 할 수 있 지만 그다지 우아 해 보이 지 않 을 수 있 습 니 다. 이 럴 때 케이스 조건 분기 문 구 를 사용 하 는 것 을 고려 할 수 있 습 니 다. 설명 을 편리 하 게 하기 위해 먼저 이러한 장면 을 허구 한다. 프로그램 이 사용자 와 상호작용 을 할 때 프로그램 은 사용자 의 입력 에 따라 터미널 에서 해당 하 는 출력 을 해 야 한다. 사용자 의 입력 이 1 일 때 프로그램 은 터미널 에서 1 을 출력 합 니 다. 사용자 의 입력 이 2 일 때 프로그램 은 터미널 에서 2 를 출력 합 니 다. 사용자 의 입력 이 3 일 때 프로그램 은 터미널 에서 3 을 출력 합 니 다. 사용자 의 입력 이 1 도 아니 고 2 도 아니 고 3 도 아 닐 때 프로그램 은 터미널 에서 You did not enter a number between 1 and 3 을 출력 합 니 다. if 조건 분기 문 구 를 사용 하면 스 크 립 트 는 다음 과 같 습 니 다.
#!/bin/bash
echo -n "Enter a number between 1 and 3 inclusive > "
read character
if [ "$character" = "1" ]; then
echo "You entered one."
elif [ "$character" = "2" ]; then
echo "You entered two."
elif [ "$character" = "3" ]; then
echo "You entered three."
else
echo "You did not enter a number between 1 and 3."
fi
위의 이러한 표기 법 은 우리 가 필요 로 하 는 기능 을 충분히 실현 할 수 있 지만 if... elif. else... 의 사용 횟수 가 많 고 코드 가 비대 해 보 입 니 다. 이때 우리 가 case 조건 분기 문 구 를 선택 하면 스 크 립 트 는 다음 과 같 습 니 다.
#!/bin/bash
echo -n "Enter a number between 1 and 3 inclusive > "
read character
case $character in
1 ) echo "You entered one."
;;
2 ) echo "You entered two."
;;
3 ) echo "You entered three."
;;
* ) echo "You did not enter a number between 1 and 3."
esac
이 스 크 립 트 는 첫 번 째 스 크 립 트 와 같은 기능 을 실 현 했 지만 훨씬 시원해 보 였 다.이것 이 바로 케이스 조건 분기 문장의 역할 이다. 다음은 케이스 조건 분기 문장의 사용 방법 을 간단하게 소개 합 니 다.
case word in
pattern1 ) command1 ;;
pattern2 ) command2 ;;
...
patternn ) commandn ;;
esac
스 크 립 트 는 실행 할 때 워드 의 형식 을 아래 의 첫 번 째 부터 n 번 째 pattern 모드 와 일치 시 킵 니 다. 일치 하 는 데 성공 하면 해당 pattern 뒤의 명령 을 실행 하고 후속 pattern 과 패턴 을 일치 시 키 지 않 습 니 다.예 를 들 어 워드 의 모드 가 두 번 째 pattern 의 모드 와 일치 하면 프로그램 은 두 번 째 pattern 뒤의 명령 을 실행 합 니 다. 이 때 워드 가 두 번 째 pattern 뒤의 특정한 pattern 과 일치 하 더 라 도 프로그램 은 어떠한 동작 도 하지 않 습 니 다. 여기에 주의해 야 할 두 가지 가 있다. 1. patterns 는 Shell 의 정규 표현 식 으로 자바 나 python 의 정규 표현 식 과 차이 가 있 습 니 다.셸 정규 표현 식 에 대한 지식 을 더 알 고 싶 으 면 관련 튜 토리 얼 을 검색 할 수 있 습 니 다. 2. 두 개의 분점 의 사용 에 주의 하고 한 개의 분점 만 사용 하면 잘못 보고 할 수 있 습 니 다.
case 조건 분기 문장의 사용 방법 을 알 게 된 후에 약간 복잡 한 예 를 보 여 줍 니 다. (1) 사용자 가 단일 알파벳 을 입력 했 을 때 프로그램 은 터미널 에서 You typed the letter 를 출력 합 니 다. (2) 사용자 가 단일 숫자 를 입력 했 을 때 프로그램 은 터미널 에서 You typed the digit 를 출력 합 니 다. (3) 사용자 가 다른 내용 을 입력 할 때 터미널 에서 프로그램 출력 You did not type a letter or a digit 이 기능 을 구현 하 는 스 크 립 트 는 다음 과 같 습 니 다.
#!/bin/bash
echo -n "Type a digit or a letter > "
read character
case $character in
# Check for letters
[[:lower:]] | [[:upper:]] ) echo "You typed the letter"
;;
# Check for digits
[0-9] ) echo "You typed the digit"
;;
# Check for anything else
* ) echo "You did not type a letter or a digit"
esac
이 스 크 립 트 도 간단 합 니 다. 만약 에 독자 가 이 코드 를 볼 때 어려움 을 느낀다 면 정규 표현 식 부분 을 잘 보지 못 할 수도 있 습 니 다.하지만 괜 찮 습 니 다. 여기 가 case 조건 분기 문 구 를 다 루 는 사용 방법 이라는 것 만 알 아야 하기 때 문 입 니 다. 이것 만 알 면 지식 공유 의 목적 을 달성 할 수 있 습 니 다.셸 의 정규 표현 식 인지, 아니면 그 말 인지 알 고 싶다 면 관련 튜 토리 얼 을 검색 해서 배 울 수 있 습 니 다.
관련 문서
http://linuxcommand.org/lc3_wss0110.php
이전 편: Shell Script (5): 상호작용 과 산수 연산 다음 편: Shell Script (7): 순환 (for, while, until)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.