1

我正在编写一个脚本,该脚本将 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

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

4

1 回答 1

1

在你的while getopts循环之后,这样做:

shift $((OPTIND-1))
if (( $# > 0 )); then
    echo "error: extra args detected: $*" >&2
    exit 1
fi
于 2013-06-14T18:50:12.967 回答