如何多次调用bash中的getopts

Hor*_*ude 2 bash getopt

我有一个公共库,我使用几个解析命令行选项的脚本,但是我也希望我的个人脚本能够处理参数...例如

common.sh:

function get_options {
    echo -e "in getoptions"
    echo $OPTIND
    while getopts ":ab:" optionName; do
       [ ... processing code ... ]
    done
}
Run Code Online (Sandbox Code Playgroud)

. ./common.sh

function get_local_options {
    echo -e "in getoptions"
    echo $OPTIND
    while getopts ":xy:" optionName; do
       [ ... processing code ... ]
    done
}

get_local_options $*
OPTIND=1
get_options $*
Run Code Online (Sandbox Code Playgroud)

问题是,如果我用a调用a.sh:

a.sh -x -y foo -a -b bar
Run Code Online (Sandbox Code Playgroud)

get_options停止在"foo"处理,因为它停在第一个"非选项"

没有改写自己的东西吗?

小智 6

foo() {
  unset OPTIND
  while getopts ...
  do
  done
}
Run Code Online (Sandbox Code Playgroud)