function my_getopts { version="3.141592p, 2002-02-02, Michael Wang ." typeset SEP= i _I _J for i; do _I=$(echo $i | tr "[a-z]" "[A-Z]") _J=${_I%%=*} _J=${_J%:} eval ${_J}= unset ${_J} case $_I in *[!:]=*) eval $(IFS=$SEP; print ${_I%%=*}=\"${_I#*=}\") ;; *:=*) eval $(IFS=$SEP; print ${_I%%:=*}=\"${i#*:=}\") ;; esac done }