关于shell函数的问题

关于shell函数的问题

在机械工业出版社出版的《LINUX 与 UNIX Shell 编程指南》一书的第211页,有一个例子:
以下函数是一个真正的提示函数,提供了显示信息及缺省回答方式。缺省回答即用户按下回车键时采取的动作。case语句用于捕获回答。
continue_prompt()
# continue_prompt
to call: continue_prompt "string to display" default_answer
{
_STR=$1
_DEFAULT=$2
# check we have the right params
if [ $# -lt 1 ]; then
        echo "continue_prompt: I need a string to display"
        return 1
fi
# loop forever
while :
do
        echo -n "$_STR [Y..N] [$_DEFAULT]:"
        read_ANS
        # if user hits return set the default and determine the return value,
        # that's a : then a <space> then $
        : ${_ANS:=$_DEFAULT}
        if [ "$_ANS" = "" ]; then
                case $_ANS in
                Y) return 0 ;;
                N) return 1 ;;
                esac
        fi
        # user has selected something
        CASE $_ans IN
        y|Y|Yes|YES)
                return 0
                ;;
        n|N|No|NO)
                return 1
                ;;
        *) echo "Answer either Y or N, default is $_DAFAULT"
                ;;
        esac
        echo $_ANS
done
}
但在实际使用时,发现并不能实现,除了删掉:
       if [ "$_ANS" = "" ]; then
                case $_ANS in
                Y) return 0 ;;
                N) return 1 ;;
                esac
        fi
还有些问题,请问有谁知道应该怎么改?因为找不到英文原版进行核对,所以希望能有朋友帮助,谢谢!      
把你的问题抽象出来