我有一个通用库,用于在多个脚本中解析命令行选项,但是我也希望我的个人脚本也能够处理参数...例如common.sh:func...
我有一个通用库,用于从多个脚本解析命令行选项,但我还希望我的各个脚本也能够处理参数...例如
通用.sh:
function get_options {
echo -e "in getoptions"
echo $OPTIND
while getopts ":ab:" optionName; do
[ ... processing code ... ]
done
}
灰
. ./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 $*
问题是,如果我用以下命令调用 a.sh:
a.sh -x -y foo -a -b bar
get_options 在 \'foo\' 处停止处理,因为它在第一个 \'非选项\' 处停止
有什么办法可以解决这个问题而不用自己重写吗?
这里有一些不错的答案,但我认为有一个简单的解决方案:您需要增加它 OPTIND
而不是将其重置为 1。即
灰
. ./common.sh
function get_local_options {
echo -e "in getoptions"
echo $OPTIND
while getopts ":xy:" optionName; do
[ ... processing code ... ]
done
}
get_local_options $*
(( OPTIND++ ))
get_options $*
这样,您将跳过 foo
参数列表中的单词。