有趣的企业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