玩转shell-shell抽奖程序(github源码)

╰半橙微兮° 2023-02-13 14:57 15阅读 0赞

文章目录

  • 前言
  • 代码
    • 抽奖程序一
    • 抽奖程序二
    • 终极版抽奖程序三

在这里插入图片描述

前言

此篇博文做 shell 抽奖程序的介绍,有几种类型的抽奖程序,请见如下

环境

  • bash shell 3
  • centos 7
  • vim 编辑器

代码

抽奖程序一

这个抽奖程序要求需要经过多轮抽奖并显示每轮的结果,每轮尽量筛除一半的人,最后一轮只留下一人,最后一人就是获奖者

  1. #! /bin/bash
  2. # 循环读取多行数据
  3. chouJiang(){
  4. while read -a line
  5. do
  6. arr+=(${line[@]});
  7. done;
  8. # 若没有抽奖人
  9. if((${#arr[@]}==0))
  10. then
  11. printf "无人抽奖!\n";
  12. exit;
  13. fi;
  14. # 记录抽奖轮次
  15. count=0;
  16. printf "\033[;32m \t%s \033[0m" "抽奖人员有:";
  17. printf "${arr[*]}\n";
  18. # 抽奖进行多轮次循环
  19. while((1))
  20. do
  21. # 程序最终出口
  22. if((${#arr[@]}<=1))
  23. then
  24. printf "\033[;32m \n\t%s \033[0m\033[;31m %s\n \033[0m" "经过$count轮抽奖,最终获奖者:" "${arr[0]}";
  25. break;
  26. fi;
  27. # 每轮开始的初始操作
  28. result=();
  29. let "count++";
  30. printf "\033[;32m \t%s \033[0m" "第$count轮抽奖:";
  31. # 当前轮次抽取 arr 数组中的人
  32. for i in ${!arr[@]}
  33. do
  34. # 通过随机数看是否选出他,若选中就保存到 result 数组
  35. if((RANDOM%2==0))
  36. then
  37. result+=(${arr[$i]});
  38. fi;
  39. done;
  40. # 若谁都没被选到就重抽
  41. if((${#result[@]}!=0))
  42. then
  43. # 输出当前轮次被选到的人
  44. printf "\033[;33m %s\n \033[0m" "${result[*]}";
  45. arr=(${result[@]});
  46. else
  47. printf "无人抽中,再来一次\n";
  48. fi;
  49. done;
  50. }

抽奖程序二

这个抽奖程序要求只用显示最后获奖者,传一个参数表示有几个人获奖

  1. #! /bin/bash
  2. chouJiang{
  3. while read -a line
  4. do
  5. arr+=(${line[@]});
  6. done;
  7. if((${#arr[@]}<$1))
  8. then
  9. printf "\033[;31m %s\n \033[0m" "输入异常,结束!";
  10. exit;
  11. fi;
  12. # 数组长度
  13. size=${#arr[@]};
  14. # 轮次
  15. count=0;
  16. # count 轮循环,每次取一人
  17. while((count<$1))
  18. do
  19. index=$((RANDOM%size));
  20. while [[ ! ${arr[index]} ]]
  21. do
  22. index=$((RANDOM%size));
  23. done;
  24. result+=(${arr[index]});
  25. unset arr[index];
  26. ((count++));
  27. done;
  28. # 输出获奖者
  29. printf "\033[;32m %s\n \033[0m" "${result[*]}";
  30. }

终极版抽奖程序三

这一版本抽奖程序是经过了最终优化的,该版本 bash 编写的抽奖程序已经发布于 github 上,并且其中已经提供了抽奖成员名单,你不用这个现成的名单也可以,用自己的也行,bash 编写的抽奖项目 github 地址如下:

github:lottery4bash

需要的童鞋们可以自取,可以用于临时随机的抽奖,支持抽一人和抽多人。只用将这个 lucky.sh 拷贝到自己的服务器中,需要的时候一用即可,README.md 中写有非常详细的项目介绍和使用说明,并且支持中英双译哦!

在这里插入图片描述在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,15人围观)

还没有评论,来说两句吧...

相关阅读

    相关 8 插件GitHub

    作为程序员对 `GitHub` 应该都不会陌生,我经常沉迷其中,找一些惊艳的项目或者工具。不过用的时间久了,发现它的用户体验实在是不敢恭维,有时候会让你做很多重复操作,浪费不少