Reading time: 1 min
#!/bin/bash
PROG="${0##*/}"
VERSION="0.0.1"
err() {
>&2 printf "Error: $1\n\n"
}
usg() {
>&2 cat << EOF
$PROG $VERSION
A bootstrap script.
USAGE:
$PROG [OPTIONS]
OPTIONS:
-h, --help Show this help.
-t, --todo-long-option Sample description.
-n NAME, --name=NAME Set name.
EOF
exit $1
}
[ "$#" -eq "0" ] && usg 1
LONGOPTS="help,name:,todo-long-option"
SHORTOPTS="hn:t"
OPT="$(getopt -l "$LONGOPTS" -o "$SHORTOPTS" -n"$PROG" -- "$@")"
eval set -- "$OPT"
while true; do
case "$1" in
-h|--help) usg 0 ;;
-n|--name) OPT_NAME="$2"; shift 2 ;;
-t|--todo-long-option) OPT_TODO=1; shift ;;
--) shift; break ;;
*) echo "Internal error!"; exit 1 ;;
esac
done
[ -z "$OPT_TODO" ] || todo
[ -z "$OPT_NAME" ] name_func "$OPT_NAME"