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