답변:
정규식 일치에서 따옴표를 제거해야합니다.
if [[ ${str} =~ m\.m ]]; then
bash 매뉴얼 페이지에서 :
[...] == 및! =와 같은 우선 순위를 가진 추가 이진 연산자 인 = ~를 사용할 수 있습니다. 사용될 때, 연산자 오른쪽의 문자열은 확장 된 정규 표현식으로 간주되며 그에 따라 일치합니다 (regex (3)에서와 같이). 문자열이 패턴과 일치하면 반환 값은 0이고, 그렇지 않으면 1입니다. 정규식이 구문 상 올바르지 않은 경우 조건식의 리턴 값은 2입니다. 쉘 옵션 nocasematch가 사용 가능하면 알파벳 문자의 경우에 관계없이 일치가 수행됩니다. 패턴의 모든 부분은 문자열로 일치되도록 인용 될 수 있습니다.
따라서 따옴표로 오래된 문자열 일치를 사용하고 있습니다.
패턴에 공백이 필요한 경우 이스케이프 처리하십시오.
str="m m"
if [[ ${str} =~ m\ +m ]]; then
\
.
${str} =~ "needle"[0-9]{1}
사용해야 ${str} =~ needle[0-9]{1}
합니까?