|
发表于 2007-1-8 19:22:53
|
显示全部楼层
bash支持无限递归调用子函数的,
你把判断出错的read改成再调用函数本身就是了.
你的结构可以这样:
- PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
- export PATH
- function added_account(){
- echo -n " Please input pppoe account,must more than six characters "
- echo
- read -p "Example :sg[0-9A-Za-z]: " account
- if [ "$account" != "sg[0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]*" ];then
- echo -e "invalid account ,please choose another one "
- elif egrep "^$account:" /etc/passwd > /dev/null 2>&1;then
- echo -e "your accont exist in the system,please choose another one"
- else
- return
- fi
- added_account
- }
复制代码
其实这样写跟循环一样吧, 只是效率可能比循环低?,
要改成循环只要把return改成break就好了.
不过你的判断在我这除了输入sg[0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]*, 它都给我一个通不过, 可能是版本不一样吧. |
|