Bash 스크립팅 입문
Alex Scriven
Data Scientist
여러 개 또는 복잡한 조건이 있으면 CASE 문이 IF 문보다 더 효율적일 수 있습니다.
다음 조건과 동작을 검사한다고 가정해 보겠습니다:
sydney가 있으면 /sydney 디렉터리로 이동melbourne 또는 brisbane가 있으면 삭제canberra가 있으면 원래 파일명을 filename이라 할 때 IMPORTANT_filename으로 이름 변경다음과 같이 여러 IF 문을 만들 수 있습니다:
grep을 호출합니다.if grep -q 'sydney' $1; then
mv $1 sydney/
fi
if grep -q 'melbourne|brisbane' $1; then
rm $1
fi
if grep -q 'canberra' $1; then
mv $1 "IMPORTANT_$1"
fi
PATTERN에는 정규식 사용 가능. 예: 시작이 Air이면 Air*, hat를 포함하면 *hat*기본 CASE 문 형식:
case 'STRINGVAR' inPATTERN1) COMMAND1;; PATTERN2) COMMAND2;;
*) DEFAULT COMMAND;;
esac 마지막 마무리 키워드는 'esac'입니다
기본 CASE 문 형식:
case 'STRING' in PATTERN1) COMMAND1;; PATTERN2) COMMAND2;;*) DEFAULT COMMAND;;esac
이전 IF 문:
if grep -q 'sydney' $1; then
mv $1 sydney/
fi
if grep -q 'melbourne|brisbane' $1; then
rm $1
fi
if grep -q 'canberra' $1; then
mv $1 "IMPORTANT_$1"
fi
새로운 CASE 문:
case $(cat $1) in*sydney*) mv $1 sydney/ ;; *melbourne*|*brisbane*) rm $1 ;; *canberra*) mv $1 "IMPORTANT_$1" ;;*) echo "No cities found" ;; esac
Bash 스크립팅 입문