摘要
在老男孩博客看了个Shell脚本的考试题,觉得挺有意思就试着写了下,只实现了基本的功能,大佬勿喷。
需求
首先让系统随机生成一个数字,给这个数字定一个范围(1-60),让用户输入猜的数字,对输入进行判断,如果不符合要求,就给予高或低的提示。其他要求:
1、全部猜对后则给出猜对使用用的 总次数。
2、根据猜的历史给出击败了百分之多少的已经猜过的用户。
3、并把关键的内容(高低以及数字部分)以特殊颜色提示用户。
效果展示
1、猜测超过5次的提示
2、猜测4-5次的提示
3、猜测1-3次的提示
4、1次猜对的提示
代码
[s][p]
#!/bin/bash clear number=`expr ${RANDOM} % 60` # 作弊专用 # echo "Answer: ${number}" > /mnt/1.txt i=0 while true do read -p "请猜一个1-60的数字并输入: " num let i+=1 if [ ${num} -eq ${number} ];then if [ ${i} -ge 5 ];then echo -e "你一共猜了\033[33m${i}\033[0m次,哥们儿,就这智商啊,是不是该找薛大佬学习了." fi if [ ${i} -le 3 ];then echo -e "你一共猜了\033[33m${i}\033[0m次,太牛逼了,膜拜!" fi if [ ${i} -gt 3 -a ${i} -lt 5 ];then echo -e "你一共猜了\033[33m${i}\033[0m次,马马虎虎,继续努力!" fi echo ${i} >> /mnt/sum.txt bigNumber=0 for content in `cat /mnt/sum.txt` do if [ ${content} -gt ${i} ];then let bigNumber+=1 fi done sum=`cat /mnt/sum.txt | wc -l` if [ ${sum} -eq 1 ];then echo -e "截止目前共\033[33m${sum}\033[0m人参加,你猜了\033[33m${i}\033[0m次,击败了全国\033[33m100%\033[0m的Linux运维工程师,继续努力." elif [ ${bigNumber} -eq 0 ];then echo -e "截止目前共\033[33m${sum}\033[0m人参加,你猜了\033[33m${i}\033[0m次,击败了全国\033[33m0%\033[0m的Linux运维工程师,继续努力." elif [ ${bigNumber} -eq `expr ${sum} - 1` ];then echo -e "截止目前共\033[33m${sum}\033[0m人参加,你猜了\033[33m${i}\033[0m次,击败了全国\033[33m100%\033[0m的Linux运维工程师,继续努力." else percent=`awk 'BEGIN{printf "%.2f%\n",('${bigNumber}'/'${sum}')*100}'` echo -e "截止目前共\033[33m${sum}\033[0m人参加,你猜了\033[33m${i}\033[0m次,击败了全国\033[33m${percent}\033[0m的Linux运维工程师,继续努力." fi exit fi if [ ${num} -gt ${number} ];then echo -e "哥们儿,猜\033[33m高\033[0m了,请继续" fi if [ ${num} -lt ${number} ];then echo -e "哥们儿,猜\033[33m低\033[0m了,请继续" fi done
[/p]