shell 의 switch
case "$1" in
start) ./serve.sh & ;;
stop) pkill -f serve.sh ;;
status) pgrep -fa serve.sh ;;
*) echo "usage: $0 {start|stop|status}"; exit 2 ;;
esac각 가지는 ;; 로 끝. 패턴은 glob 스타일 (*, ?, [abc]) 첫 매치 승. *) 가 default.
가지마다 패턴 여러 개
case "$ext" in
jpg|jpeg|png|gif|webp) echo image ;;
mp4|mov|webm) echo video ;;
*.bak|*~|*.tmp) echo trash ;;
*) echo other ;;
esacfallthrough (bash 4+, zsh)
;;& 로 끝내면 다음 패턴들도 계속 테스트. ;& 면 다음 가지의 본문으로 fallthrough. 드물지만 유용.
case 가 if 를 이기는 때
elif 를 두 번 넘게 string equality 로 쓰고 있으면 case 로 갈아탈 시점. 더 평평하고 가독성 좋고 빠름. shell 스크립트의 CLI 분기 (start|stop|status|reload) 다수가 case.