¿Cómo determina la declaración case del shell si el valor de entrada está dentro de un rango determinado?
El juicio condicional de caso se basa en cadenas. Para su pregunta, puede ser así
leer i
case $i en
20|[ 1. ][0-9]|[1-9]) echo $i ;;
*) echo 'err' ;;
esac
Pero para condiciones generales de rango numérico, es mejor usar declaraciones if elif else
.