[regex] bash 스크립트에서 정규식을 어떻게 사용합니까?

정규식을 사용하여 변수에 유효한 연도가 있는지 확인하고 싶습니다. bash 매뉴얼을 읽고 나는 연산자를 사용할 수 있음을 이해합니다 = ~

아래 예를 보면 “not OK”가 표시되지만 “OK”가 표시됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

i="test"
if [ $i=~"200[78]" ]
then
  echo "OK"
else
  echo "not OK"
fi



답변

3.1과 3.2 사이에서 변경되었습니다.

이것은 bash-3.1 릴리스 이후 bash-3.2에 추가 된 새로운 기능에 대한 간결한 설명입니다.

문자열 인수를 [[명령의 = ~ 연산자에 인용하면 다른 패턴 일치 연산자와 마찬가지로 문자열 일치가 강제 실행됩니다.

따라서 따옴표없이 사용하십시오.

i="test"
if [[ $i =~ 200[78] ]] ; then
    echo "OK"
else
    echo "not OK"
fi


답변

연산자 주위에 공백이 필요합니다 = ~

i = "테스트"
if [[$ i = ~ "200 [78]"]];
그때
  에코 "OK"
그밖에
  에코 "좋지 않음"
fi


답변