This post shows how you can parse shell options using getopts and getopt.
getopts is a bash built-in command. I find it a lot easier to use than getopt.
Here is an example of using getopts:
# options a and b are followed by a colon because they require arguments
while getopts "ha:b:" opt; do
case "$opt" in
h)
echo "help"
;;
a)
option_a=$OPTARG
;;
b)
option_b=$OPTARG
;;
esac
done
shift $((OPTIND-1))
echo "option_a: $option_a"
echo "option_b: $option_b"
# read positional parameters
echo "Param 1: $1"
echo "Param 2: $2"
Running it:
$ myscript.sh -a foo -b bar hello world option_a: foo option_b: bar Param 1: hello Param 2: worldUsing getopt:
getopt supports long options and that's the only time I use it.
Here is an example of using getopt:
options=$(getopt -n "$0" -o ha:b: -l "help,alpha:,bravo:" -- "$@")
(( $? != 0 )) && echo "Incorrect options provided" >&2 && exit 1
eval set -- "$options"
while true; do
case "$1" in
-h|--help)
echo "help"
;;
-a|--alpha)
shift
option_a="$1"
;;
-b|--bravo)
shift
option_b="$1"
;;
--)
shift
break
;;
esac
shift
done
echo "option_a: $option_a"
echo "option_b: $option_b"
# read positional parameters
echo "Param 1: $1"
echo "Param 2: $2"
Running it:
$ myscript.sh --alpha foo --bravo bar hello world option_a: foo option_b: bar Param 1: hello Param 2: world
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.