Example of how to parse options with bash getopt.

#!/usr/bin/env bash

OPTS=`getopt -o vhns: --long verbose,dry-run,help,stack-size: -n 'options-test.sh' -- "$@"`
if [ $? != 0 ]; then
    echo "Failed parsing options." >&2
    exit 1
fi

#eval set -- "$OPTS"

VERBOSE=false
HELP=false
DRY_RUN=false
STACK_SIZE=0

while true; do
    case "${1}" in
        -v | --verbose    ) VERBOSE=true; shift ;;
        -h | --help       ) HELP=true; shift ;;
        -n | --dry-run    ) DRY_RUN=true; shift ;;
        -s | --stack-size ) STACK_SIZE="$2"; shift; shift ;;
                       -- ) shift; break ;;
                        * ) break ;;
                        #* ) if [ -z "$1" ]; then break; else echo "$1 is not a valid option"; exit 1; fi;; to
    esac
done

echo VERBOSE=$VERBOSE
echo HELP=$HELP
echo DRY_RUN=$DRY_RUN
echo STACK_SIZE=$STACK_SIZE

#
# Iterate over rest arguments called $arg
for arg in "${@}"; do
    # Your code here (remove example below)
    echo "${arg}"
done