Bueno, es que solamente diste tres horas para contestar, ¡esto no es un chat!
La verdad, a menos que necesites trabajar con la Bourne Shell (no BASH, sino "sh"), una KSH muy antigua (anterior a ksh93), o alguna de las shells minimalistas (dash, ash, etc) esto vale y es más sencillo
Código BASH:
Ver original# forzamos a que haya 3 partes, convirtiendo los guiones en espacios.
# para BASH y KSH93
PARTES=( $(echo $RESPFECHA |tr "-" " ") )
if (( ${#PARTES[@]} == 3 )); then
ANIO=${PARTES[0]}
MES=${PARTES[1]}
DIA=${PARTES[2]}
if (( ANIO > 2007 && ANIO < 3001 && MES > 0 && MES <= 12 && DIA > 0 && DIA <= 31 )); then
echo Fecha válida
else
echo Fecha no válida
fi
else
echo ERROR: la fecha ingresada no contiene 3 partes separadas por un guión
fi
Saludos.