老男孩IT教育,只培养技术精英

全国免费咨询电话:400-609-2893
据说这是一道没人搞得定的趣味Shell编程游戏题!

    /    2018-08-10

1.1 猜数字编程游戏

首先让系统随机生成一个数字,给这个数字定一个范围(1-60),让用户输入猜的数字,对输入进行判断,如果不符合要求,就给予高或低的提示。其他要求:

1、全部猜对后则给出猜对使用用的总次数。

2、根据猜的历史给出击败了百分之多少的已经猜过的用户。

3、并把关键的内容(高低以及数字部分)以特殊颜色提示用户。

(来源:老男孩IT教育Linux云计算运维Shell课程考试题)

1.2 最终实现效果如下

1)猜测超过5次的提示图:

2)猜测4-5次的提示图:

3) 猜测1-3次的的提示图:

1.3 实现本题的Shell编程代码如下

最终答案如下:

 1#!/bin/bash
2##############################################################
3# File Name: oldboy_guess_num.sh
4# Version: V1.0
5# Author: oldboy
6# Organization: www.oldboyedu.com
7##############################################################
8random="$((RANDOM%60))"
9YELLOW_COLOR='\E[1;33m'
10RES='\E[0m'
11count=0
12
13color(){
14    [ $# -ne 1 ] && exit 1
15    echo -e  "${YELLOW_COLOR}$1${RES}" 
16}
17
18beat(){
19    i=0
20    j=0
21    while read line
22    do
23        if [ $line -ge $count ]                                                                                               
24        then
25            ((i++))
26        else
27            ((j++))
28        fi
29    done</tmp/count.log
30    echo $i $((j+i))|awk '{print ($1/$2)*100"%"}'
31}
32guess(){
33    read -p "请猜一个1-60的数字并输入: " num
34    expr $num + 999 &>/dev/null 
35    [ $? -ne 0 ] && {
36        echo "输入数字好不好,别瞎逼输入"
37        continue
38    }
39    let count+=1
40    if [ $random -gt $num ]
41    then
42        echo "哥们儿,猜`color 低`了,请继续。"
43    elif [ $random -eq $num ]
44    then
45        if [ $count -le 3 ]
46        then
47            echo "你一共猜了`color ${count}`次,太牛逼了,膜拜。"
48        elif  [ $count -le 5 ]
49        then
50            echo "你一共猜了`color ${count}`次,马马虎虎,请再接再厉。"
51        else
52            echo "哥们儿,就这智商啊,是不是该来老男孩IT教育学习了"
53        fi
54            echo "一共猜了`color ${count}`次,击败了全国$(eval "color `beat`") 的Linux运维工程师"
55        echo "$count" >>/tmp/count.log
56        break
57    else
58        echo "哥们儿,猜`color 高`了,继续。"
59    fi
60}
61main(){
62    while true
63    do
64        guess
65    done
66}
67Main

1.4 推荐Shell实战书籍

本题来源于《跟老男孩学Linux运维:Shell编程实战》一书

提示:加入LinuxQQ交流群:384467551,购书优惠并有作者签名

(0)

分享至