在哪种状态下调用了“内部错误!”?

In which status the `Internal error!` invoked?

我已经阅读了一些关于 bash 的 getopt 的代码,让我简化一下我在这里看到的内容。
bash sample on getopt containing Internal error!

docase(){
TEMP=`getopt -o ab: -- "$@"`
eval set -- "$TEMP"
while true ; do
    case "" in
        -a) echo "Option a" ; shift ;;
        -b) echo "Option b, argument \`'" ; shift 2 ;;
        --) shift ; break ;;
        *) echo "Internal error!" ;;
    esac
done
}

我尝试了很多状态来调用 Internal error!docase gdocase -gdocase --g,从来没有发生过。

上面的代码在什么状态下调用了Internal error!
也许最好删除 *) echo "Internal error!" ;;?

docase(){
TEMP=`getopt -o ab: -- "$@"`
eval set -- "$TEMP"
while true ; do
    case "" in
        -a) echo "Option a" ; shift ;;
        -b) echo "Option b, argument \`'" ; shift 2 ;;
        --) shift ;;
        *) echo "Internal error!" ;;
    esac
done
}

要删除中断 --) shift ; break ;; 调用无限 Internal error!

docase(){
TEMP=`getopt -o ab: -- "$@"`
eval set -- "$TEMP"
while true ; do
    case "" in
        -a) echo "Option a" ; shift ;;
        -b) echo "Option b, argument \`'" ; shift 2 ;;
        --) shift ;;
        *) echo "Internal error!" ;break;;
    esac
done
}

要在 *) echo "Internal error!" 中添加中断,仅调用 Internal error! 一次。