我正在编写一个脚本,该脚本使用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”处解析,其余的开关将被忽略。当它到达“我”时我希望它出错,因为它不以' - '开头。我该怎么做?
答案 0 :(得分:1)
在while getopts
循环后,执行以下操作:
shift $((OPTIND-1))
if (( $# > 0 )); then
echo "error: extra args detected: $*" >&2
exit 1
fi