O problema é que você não pode verificar TIME com a expressão [0-23]+ :[0-59]
.
Existem várias maneiras de fazer isso:
- Para dividir sua variável e verificar cada parte separadamente:
TIME="06:25" ;
[[ $TIME != "" ]] && \
[ ${TIME%:*} -le 23 -a ${TIME%:*} -ge 0 -a \
${TIME#*:} -le 59 -a ${TIME#*:} -ge 0 ] && echo ok
- Para verificar com regex comum, mas aceitará alguns casos de hora errada (como 28:59):
"[0-2][0-9]:[0-5][0-9]")