Skip to content

Instantly share code, notes, and snippets.

@gregmark
Last active April 8, 2022 20:20
Show Gist options
  • Save gregmark/f7c652ffa0313480d69ae79d47ac1b40 to your computer and use it in GitHub Desktop.
Save gregmark/f7c652ffa0313480d69ae79d47ac1b40 to your computer and use it in GitHub Desktop.
BASH while opts
#!/bin/bash
# https://medium.com/@Drew_Stokes/bash-argument-parsing-54f3b81a6a8f
PARAMS=""
while (( "$#" )); do
case "$1" in
-a|--my-boolean-flag)
MY_FLAG=0
shift
;;
-b|--my-flag-with-argument)
if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then
MY_FLAG_ARG=$2
shift 2
else
echo "Error: Argument for $1 is missing" >&2
exit 1
fi
;;
-*|--*=) # unsupported flags
echo "Error: Unsupported flag $1" >&2
exit 1
;;
*) # preserve positional arguments
PARAMS="$PARAMS $1"
shift
;;
esac
done
# set positional arguments in their proper place
eval set -- "$PARAMS"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment