使用 getopts 提取解析项目后,如何获取剩余的参数?

使用 getopts 提取解析项目后,如何获取剩余的参数?

我想使用 getopts 解析 bash 脚本的一些参数,但希望能够访问未包含在选项列表中的其余参数。例如,如果我有一个调用:

% script -a -b param -c param -d other arguments here

我会:

while getopts "ab:c:d" opt ; do
.
done

获取“此处的其他参数”的最简单方法是什么,这些参数不应被 getopts 处理?

答案1

解析参数时需要移位,或者

解析完成后,shift $((OPTIND -1)),然后按通常方式处理,例如

while getopts "ab:c:d" opt ; do
.
done
shift $(expr $OPTIND - 1 )

while test $# -gt 0; do
  echo $1
  shift
done

答案2

在解析结束时,一旦您移动变量 $@,它就会包含行的末尾:

while getopts "ab:c:d" opt ; do
.
done
shift $((OPTIND-1))
OTHERARGS=$@

相关内容