Skip to content

Instantly share code, notes, and snippets.

@z720
Created April 9, 2021 05:07
Show Gist options
  • Select an option

  • Save z720/4854cdfac717dd5fbc51790a3900caff to your computer and use it in GitHub Desktop.

Select an option

Save z720/4854cdfac717dd5fbc51790a3900caff to your computer and use it in GitHub Desktop.
Bash command line parsing
# from https://medium.com/@Drew_Stokes/bash-argument-parsing-54f3b81a6a8f
#!/bin/bash
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