内部错误!在哪种状态下被调用?

时间:2018-08-08 09:00:55

标签: bash getopt

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

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

我尝试过许多状态来调用Internal error!docase gdocase -gdocase --g,但从未发生。

Internal error!在上述代码中处于哪种状态?
也许最好删除*) echo "Internal error!" ;;

1 个答案:

答案 0 :(得分:0)

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

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

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

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