script.sh:
die() { echo "$*" >&2; exit 2; }
needs_arg() { if [ -z "$OPTARG" ]; then die "No arg for --$OPT option"; fi; }
while getopts ab:c:-: OPT; do
if [ "$OPT" = "-" ]; then
OPT="${OPTARG%%=*}"
OPTARG="${OPTARG#$OPT}"
OPTARG="${OPTARG#=}"
fi
case "$OPT" in
a | alpha ) alpha=true ;;
b | bravo ) needs_arg; bravo="$OPTARG" ;;
c | charlie ) needs_arg; charlie="$OPTARG" ;;
??* ) die "Illegal option --$OPT" ;;
? ) exit 2 ;;
esac
done
shift $((OPTIND-1))
echo "alpha: $alpha | bravo: $bravo | charlie: $charlie"Usage:
bash script.sh --alpha --bravo=value-here --charlie="Long value"Or:
bash script.sh -a -b value-here -c "Long value"