
#!/bin/sh
REGEX="^[2][0-2]:[0-5][0-9]$"
TIME="21:30"
if [ $TIME = $REGEX ]; then
echo "Worked"
else
echo "Did not work"
fi
: 와 관련이 있는 것 같습니다. 하지만 제가 생각하는 한 이것은 이스케이프 시퀀스가 필요하지 않은 일반 기호일 뿐입니다.
답변1
=
정규 표현식 비교의 간단한 내용이 잘못되었습니다. 를 사용해야 하며 =~
이중 괄호도 사용해야 합니다.
if [[ $TIME =~ $REGEX ]]; then
...
또한보십시오:https://stackoverflow.com/questions/17420994/bash-regex-match-string
답변2
다음과 같은 진술을 할 수도 있습니다 case
.
REGEX="[2][0-2]:[0-5][0-9]"; # Note no placeholders like ^ and $ here
TIME="21:30"
case $TIME in
$REGEX ) echo "Worked" ;; # Note no double quotes around $REGEX for allowing the wildcard matching to happen
* ) echo "Did not work" ;;
esac