KEDARUMA-FANTASTIC
6/17/2017 - 12:10 PM

bash argument parser

bash argument parser

#!/usr/bin/env bash

declare -i argc=0
declare -a argv=()
while (( $# > 0 ))
do
    case "$1" in
        [0-9]*)
            echo "#### $1"
            shift
            ;;
        begin)
            echo "#### $1"
            shift
            ;;
        end)
            echo "#### $1"
            shift
            ;;
        clean)
            echo "#### $1"
            shift
            ;;
        '-h'|'--help' )
            echo "#### $1"
            cat << "__END__"
usage : $0 [0-999... begin end clean -h -n -l -p]
__END__
            shift
            exit 1
            ;;
		 -*)
            if [[ "$1" =~ 'n' ]]; then
                echo "#### $1"
            fi
            if [[ "$1" =~ 'l' ]]; then
                echo "#### $1"
            fi
            if [[ "$1" =~ 'p' ]]; then
                echo "#### $1"
            fi
            shift
			;;
        *)
            ((++argc))
            set +u
            argv=("${argv[@]}" "$1")
#            argv=("$argv" "$1")
#            echo "EEE ${argv}"
            set -u
            shift
            ;;
    esac
done

#echo ${#argv[@]}
#echo ${argv[1]}

echo "number of argument: ${#argv[@]}"

i=0
for elem in "${argv[@]}"; do
    echo "$i: $elem"
    let ++i
done