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.