Bash4로 업그레이드했는데 정규식이 일치하지 않는 것으로 나타났습니다.
$ echo $BASH_VERSION
4.1.2(1)-release
$ [[ "20110228" =~ "^[0-9]{8}$" ]] && echo matches
그러나 Bash 3.0은 다음과 같습니다.
$ echo $BASH_VERSION
3.00.16(1)-release
$ [[ "20110228" =~ "^[0-9]{8}$" ]] && echo matches
matches
왜 이런 일이 발생합니까? 제가 제대로 설치하지 않았나요?
답변1
이것을 확인하세요답변그게 다야. bash 3 버전 3.00을 사용하고 있으므로 문제를 고려할 수 있습니다. 곧 버전 3.2부터 [[
명령에 문자열 인수를 인용하는 연산자가 =~
문자열 일치를 강제하므로 bash 4의 올바른 패턴은 다음과 같습니다.
$ [[ "20110228" =~ ^[0-9]{8}$ ]] && echo matches
matches