Shell脚本打卡30day---day6

题目:让10个人进行抓阄,取前三名。
要求:

1、执行脚本后,想去的同学输入英文名字全拼,产生随机数01-99之间的数字,
数字越大就去参加项目实践,前面已经抓到的数字,下次不能在出现相同数字。
2、第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出
继续等待别的学生输入。

#!/bin/bash
#Author:cxs
#QQ:981071195
#Time:2020-11-25 15:40:34
#Name:zhuajiu.sh
#Version:V1.0
#Description:This is a test script.
export LANG="zh_CN.UTF-8"
PATH_FILE=/tmp/zhuajiu.log
count=0
cat <<END
======================================
      1.开始游戏
      2.退出游戏
======================================
END
wait_time(){
   for((i=0;i<3;i++))
     do
        echo -n "."
        sleep 1
     done
   echo
}
start_game(){
     read -p "请输入你的英文名:" name
     if [ ! -e "$PATH_FILE" ];then
        touch "$PATH_FILE"
     fi
     [ `echo $name | sed 's/[a-Z]//g'| wc -L` -ne 0 ] && {  #判断输入的是否是英文名称
          echo "乖!别调皮"
          start_game
     }
     if [ `awk -F ":" '{print $1}' $PATH_FILE |grep "^${name}$"| wc -l` -ne 0 ];then   #判断是否输入了相同的名称
        echo "滚!你已经玩过一遍了。让下一个人来"
        start_game
     fi
}
judge(){

     TEMP=$((RANDOM%99+1))    #获取一个随机值

     if [ `grep '/$TEMP/' $PATH_FILE | wc -l` -ne 0 ];then   #判断随机值是否已经存在
         judge
     else
        echo "$name:$TEMP" >> "$PATH_FILE"
     fi
}
analyse(){
   echo "幸运儿是以下三位:"
   [ ! -e /tmp/temp.txt ] && touch /tmp/temp.txt
   awk -F ":" '{print $2}' $PATH_FILE | sort -hr| head -3 >/tmp/temp.txt #按照抓阄的数值进行排序,取前三名
   cat /tmp/temp.txt | while read line    #通过数值再把对应的名称找出来并输出再屏幕上
       do
           echo `grep "$line" "$PATH_FILE"`
       done
}
main(){
    echo "请根据提示操作,不要来些骚操作!" 
    read -p "请输入相应数字:" num
    while ((count<10))
       do
          case $num in
            1)
               start_game
               judge
               ((count++))  #记录有几个人已经抓过阄了
               wait_time
               echo "下一位"
               ;;
            2)
               break
               ;;
          esac
       done
    [ "$count" -eq 10 ] &&{
          analyse
          exit 0
    }||{
       echo "人数不够无法出成绩,让剩下的人来填写"
       main
    }
}

main

执行结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值