在机械工业出版社出版的《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
还有些问题,请问有谁知道应该怎么改?因为找不到英文原版进行核对,所以希望能有朋友帮助,谢谢!