while [ $# -gt 0 ] ; do case $1 in -a|--auto-backup) auto_backup=true ;; -d|--debug-level) _debug_mode=true case $1 in -d) shift _debug_level=$1 ;; --debug-level) _debug_level=${1#*=} ;; esac ;; -h) usage -s ;; --help) usage -l ;; -n|--dry-run) _dry_run=true ;; -[a-zA-Z][a-zA-Z]*) __options=`echo $1 | sed -Ee 's/(.)/\1 /g' -e 's/([[:alpha:]])/-\1/g' -e \ 's/ *$//'` shift set -- ${__options} $* ;; *) break ;; esac shift done initialize $@
ただし,initializeで
case $1 in -*) msg initialize "illegal option \`$1'" usage -s ;; esac