쉘 스크립트에서 문자열이 매칭되었을 때 분기하기
2020. 6. 5. 11:14ㆍIT/S . e . v . e . r . I . n . f . r . a
쉘 스크립트에서 if문에서 찾고자 하는 문자가 포함되어 있는지를 확인하기 위한
두가지 방법에 대해 이야기 해보려 합니다.
먼저 스크립트를 보시죠
#!/bin/sh
VAR_STR1="This is test string"
VAR_STR2="test"
if [[ "${VAR_STR1}" == *"test"* ]];then
echo "1st find it"
fi
if [[ "${VAR_STR1}" =~ "test" ]];then
echo "2nd find it"
fi
첫번째는 아스테리스크(*)를 사용하여 "test" 라는 문자열에 포함된 것을 찾아 분기한 것이고
두번째는 쉘 스크립트의 if문의 기능을 이용한 것입니다.
참고로 "=~"는 bash 버전3 이상일 때 지원합니다.
개인적으로는 두번째 패턴을 좋아합니다만
버전3 이상이라면 아무거나 써도 문제는 없습니다.
추가로 변수가 숫자 또는 문자로 되어 있는지를 판단하기 위한 스크립트는 아래와 같습니다.
if [[ ${VAR_LOC_SRVNAME} =~ ^[0-9]+$ ]]; then
echo "3rd find it"
fi
다만 if문을 통한 값의 판단식은 변수에 아무것도 할당되어 있지 않아도
True를 반환하기 때문에 "expr match"를 사용하는 것도 좋습니다
다음 예제를 통해 응용해봅시다.
아래 스크립트는 날짜 형식의 숫자 8자리가 매칭하는 지 확인하는 스크립트입니다.
expr match "$date" "^[0-9]\{8\}" >/dev/null && echo yes
'IT > S . e . v . e . r . I . n . f . r . a' 카테고리의 다른 글
if문에서 영문 숫자 구별하기 (0) | 2021.02.08 |
---|---|
if문의 조건의 문자열 일부 매칭 (0) | 2021.02.08 |
find 명령의 mtime 옵션 정리 (0) | 2021.02.08 |
Bash쉘에서 파일명 일괄 대소문자 변환 (0) | 2020.06.05 |
쉘 스크립트에서 실행결과가 변수에 저장되지 않는 경우 변수 저장 방법 (0) | 2020.06.05 |
쉘 스크립트에서 특정조건의 파일을 찾아 이동, 복사하기 (2) | 2020.06.05 |