while getopts \"hd:R:\" arg; do case $arg in h) echo \"usgae\" ;; d) dir=$OPTARG ;; R) if [[ $OPTARG =~ ^[0-9]+$ ]];then
getopts doesn't really support this; but it's not hard to write your own replacement.
getopts
while true; do case $1 in -R) level=1 shift case $1 in *[!0-9]* | "") ;; *) level=$1; shift ;; esac ;; # ... Other options ... -*) echo "$0: Unrecognized option $1" >&2 exit 2;; *) break ;; esac done