我正在创建一个涉及解析参数的 bash 脚本。用法是:
$ ./my_script.sh -a ARG_1 -b ARG_2 [-c LIST_OF_ARGS...]
使用getopts
我能够解析-a
并-b
获取它们各自的值ARG_1
和ARG_2
. 当且仅当用户将-c
其作为最后一个参数时,我还能够获取-c
并创建一个包含所有值的列表LIST_OF_ARGS...
。
但我不想强迫用户-c
作为最后一个标志插入。例如,如果可以以这种方式调用脚本,那就太好了:
$ ./my_script.sh -b ARG_2 -c V1 V2 V3 -a ARG_1
这是我当前的代码:
while getopts a:b:c opt
do
case $opt in
a)
A_FLAG=$OPTARG
;;
b)
B_FLAG=$OPTARG
;;
c)
# Handle values as regular expressions
args=("$@")
C_LIST=()
for (( i=$OPTIND-1 ; i <= $#-1 ; i++ ))
do
C_LIST=("${C_LIST[@]}" ${args[$i]})
done
;;
?)
usage
;;
esac
done