Вместо того, чтобы использовать getopt или делать собственные настройки, попробуйте использовать " getopt "Он поддерживает как длинные (слово), так и короткие (символьные) аргументы.
Вот пример его использования:
get_inputs () {
set -- $( getopt -u -l class:,desc:,force,host:,help,verbose "c:d:fh:v?" "$@" )
while [ $# -gt 0 ]; do
case "$1" in
-c|--class)
CLASS=$2
shift
;;
-d|--desc)
DESCR=$2
shift
;;
-f|--force)
FORCE=1
;;
-h|--host)
HOST=$2
shift
;;
-v|--verbose)
VERBOSE=1
;;
--help)
usage
exit
;;
*)
break
;;
esac
shift
done
}