bash - Parsing a flag with a list of values -
i'm creating bash script involves parsing arguments. usage be:
$ ./my_script.sh -a arg_1 -b arg_2 [-c list_of_args...]
using getopts
i'm able parse -a
, -b
, respective values arg_1
, arg_2
. if , if user places -c
last argument, i'm able -c
, create list values in list_of_args...
.
but not force user insert -c
last flag. instance, great if script can invoked way:
$ ./my_script.sh -b arg_2 -c v1 v2 v3 -a arg_1
here current code:
while getopts a:b:c opt case $opt in a) a_flag=$optarg ;; b) b_flag=$optarg ;; c) # handle values regular expressions args=("$@") c_list=() (( i=$optind-1 ; <= $#-1 ; i++ )) c_list=("${c_list[@]}" ${args[$i]}) done ;; ?) usage ;; esac done
on system, haven /usr/share/doc/util-linux/examples/getopt-parse.bash
file. puts result of getopt
variable, , set positional parameters variable. uses switch
similar yours, uses shift
remove arguments when found.
you similar, -c
option use shift
until option or run out of arguments.
or might enough use current solution, remember set optind
variable after loop.
Comments
Post a Comment