
내 로그 파일 중 하나의 타임스탬프를 확인하고 싶습니다. 그런데 Case문의 표현에 문제가 있는 것 같습니다.
TIME 값은 11:49 또는 2011과 같을 수 있습니다. 그리고 HH:MM 형식인지 확인하고 싶습니다. 코드는 아래에 있습니다.
파일이 HH:MM 형식인데도 항상 연도 형식이라고 나옵니다.
#!/usr/bin/ksh
TIME=`ls -lrth /var/log/*.log | grep -i upg | tail -1 | awk '{print $8}'`
echo "$TIME"
validation=false
if [[ $TIME != "" ]]
then
case TIME in
"[0-23]+ :[0-59]")
validation=true
break;;
*) echo "Year format";;
esac
fi
echo "$validation
업데이트: "[0-2][0-9]:[0-5][0-9]")를 시도했지만 유효성 검사가 여전히 실패를 반환합니다.
답변1
문제는 표현식으로 TIME을 확인할 수 없다는 것입니다 [0-23]+ :[0-59]
.
이를 수행하는 방법에는 여러 가지가 있습니다.
- 변수를 분할하고 각 부분을 개별적으로 확인하려면 다음을 수행하세요.
TIME="06:25" ;
[[ $TIME != "" ]] && \
[ ${TIME%:*} -le 23 -a ${TIME%:*} -ge 0 -a \
${TIME#*:} -le 59 -a ${TIME#*:} -ge 0 ] && echo ok
- 일반적인 정규식으로 확인하려면 잘못된 시간(예: 28:59)이 허용됩니다.
"[0-2][0-9]:[0-5][0-9]")