我已经阅读了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 g
,docase -g
来docase --g
,但从未发生。
Internal error!
在上述代码中处于哪种状态?
也许最好删除*) echo "Internal error!" ;;
?
答案 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!
。