Bash 정규식 일치가 4.1에서 작동하지 않습니다.

Bash 정규식 일치가 4.1에서 작동하지 않습니다.

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

관련 정보