有趣的企业shell实战编程题:
好消息,老男孩培训学生外出企业项目实践机会(第6次)来了(本月中旬),但是,名额有限,队员限3人(班长带队)。
因此需要挑选学生,因此需要一个抓阄的程序:
要求:
1、执行脚本后,想去的同学输入英文名字全拼,产生随机数01-99之间的数字,
数字越大就去参加项目实践,前面已经抓到的数字,下次不能在出现相同数字。
2、第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出
继续等待别的学生输入。

昨天晚上睡觉失眠了,睡不着觉,就突然想起这个题目,欢迎同学们,博友们挑战。学了python的搞出来也可以。。
独立完成的第一个同学,抓阄时加40个点。


欢迎同学们,博友们挑战,贴答案!

答案参考:

[root@oldboy scripts]# cat zhuajiu.sh 
#!/bin/bash
##############################################################
# File Name: zhuajiu.sh
# Version: V1.0
# Author: oldboy
# Organization: www.oldboyedu.com
##############################################################
>/tmp/a.log
while true
do
    while true
    do
        random=`echo $((RANDOM%99))`
        if [ `grep -w $random /tmp/a.log|wc -l` -eq 1 ]
        then
            random=`echo $((RANDOM%99))`
        else
            break
        fi
    done
    read -p "请输入姓名全拼:" name
    if [ "$name"  == "exit" ]
    then
        echo "抓阄结束,结果如下"
        break
    else
        echo -e "$random\t$name"|tee -a /tmp/a.log
    fi
done
sort -rn -k1 /tmp/a.log|head -3

低调的专业答案:
[root@oldboy scripts]# cat zhuajiu1.sh 
#!/bin/bash
##############################################################
# File Name: zhuajiu.sh
# Version: V1.0
# Author: oldboy
# Organization: www.oldboyedu.com
##############################################################
>/tmp/name.log
random(){
    random="$((RANDOM%100))"
    if [ `egrep -w "$random" /tmp/name.log|wc -l` -ge 1 ]
    then
        continue
    fi
}
name(){
    read -p "请输入你的名字的全拼:" name
    if [ "$name" = "exit" ];
    then
        break
    fi
    if [ `egrep -w "$name" /tmp/name.log|wc -l` -ge 1 ]
    then
        echo "名字重复,请重新输入"
        continue
    fi
    echo -e "$random\t\t$name"|tee -a /tmp/name.log
}
main(){
    while true
    do
        random
        name
    done
    echo "抓阄结束,排序结果如下:"
    sort -rn -k1 /tmp/name.log|head -3
}
main

[root@oldboy scripts]# sh zhuajiu.sh
请输入姓名全拼:xiaoding
83	xiaoding
请输入姓名全拼:haiyan
82	haiyan
请输入姓名全拼:kaili
35	kaili
请输入姓名全拼:xiaojiang   
36	xiaojiang
请输入姓名全拼:xiaocai
73	xiaocai
请输入姓名全拼:xiaosu
81	xiaosu
请输入姓名全拼:xiaoliang
30	xiaoliang
请输入姓名全拼:exit

抓阄结束,结果如下
83	xiaoding
82	haiyan
81	xiaosu