当optionstring没有以破折号开头时make makeopts错误

时间:2013-06-14 18:18:13

标签: bash getopts

我正在编写一个脚本,该脚本使用getopts来获取需要参数的选项,而另一些则不需要。如果任何开关没有以' - '开头,我希望getopts退出时出错,而不是简单地停止解析选项并继续。所以如果这是我的getopts行:

while getopts "a:e:f:o:q:r:djpsvV" opt; do

我按这样调用脚本:

script.sh -a word -o eat me -j -d -e testing

脚本停止在“me”处解析,其余的开关将被忽略。当它到达“我”时我希望它出错,因为它不以' - '开头。我该怎么做?

1 个答案:

答案 0 :(得分:1)

while getopts循环后,执行以下操作:

shift $((OPTIND-1))
if (( $# > 0 )); then
    echo "error: extra args detected: $*" >&2
    exit 1
fi