정규식을 사용하여 변수에 유효한 연도가 있는지 확인하고 싶습니다. bash 매뉴얼을 읽고 나는 연산자를 사용할 수 있음을 이해합니다 = ~
아래 예를 보면 "not OK"가 표시되지만 "OK"가 표시됩니다. 내가 도대체 뭘 잘못하고있는 겁니까?
i="test"
if [ $i=~"200[78]" ]
then
echo "OK"
else
echo "not OK"
fi
정규식을 사용하여 변수에 유효한 연도가 있는지 확인하고 싶습니다. 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
a +b
구문 오류를보고합니다 ...
a\ \+b
공백과 더하기 문자를 이스케이프하는 데 사용 합니다.
연산자 주위에 공백이 필요합니다 = ~
i = "테스트" if [[$ i = ~ "200 [78]"]]; 그때 에코 "OK" 그밖에 에코 "좋지 않음" fi