aflag= bflag= while getopts ab: name -a -b 1 -a -a -a -b 5 -b 3 -a one two three four five do case $name in a) aflag=1 ;; b) bflag=1 bval=$OPTARG;; ?) echo Usage: $0 [-a] [-b value] args exit 2;; esac done if [ ! -z "$aflag" ] ; then echo -a specified ; fi if [ ! -z "$bflag" ] ; then echo -b $bval specified ; fi set -- -a -b 1 -a -a -a -b 5 -b 3 -a one two three four five if [ "$OPTIND" -gt 1 ] then shift $(( $OPTIND - 1 )) fi echo remaining args: "$*" exit 0