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

 #!/bin/bash
while true;do
  echo -e "\e[1;31m退出请输入:exit  \e[0m"
  read -e -p "ples input you name(拼音):" name name1
  ##判断是否退出程序
  [ "$name" == "exit" ]&& exit 0

##判断输入的用户名是否符合以下规则
  echo $name|grep ^[A-Za-z]*$  &>/dev/null
  #判断是否字母
  [ $? -ne 0 ] && {
     clear
     echo -e "\e[1;33m 请输入拼音名!! \e[0m \n"
     continue
  }
  #名字不能为空
  [ -z $name ] && {
      clear
      echo -e "\e[1;33m 名字不能为空!! \e[0m \n"
      continue
  }
  #不能有第二个名字参数
  [ ! -z $name1 ] && {
      clear
      echo -e "\e[1;33m 请输入正确的名字!! \e[0m \n"
      continue
  } 
  [ ! -f b.txt ] && touch b.txt

##循环列表检查用户名是否存在,存在则重新输入。
  filename=`awk '{print $1}' b.txt`
  RAT1=Fasle
  for i in $filename;do
      if [ "$i" == "$name" ];then
         clear
         echo -e "\e[1;33m 用户名($name)已经存在,不能输入第二次!! \e[0m \n"
         RAT1=True
         break
      fi
  done
  [ "$RAT1" == "True" ]&&{
         continue
  }

##判断文件中是否已经存在的数字就不能在次添加,直到是文件中没有的数字。
  while true;do
      #判断是否已经达到99个数字了
      [ `cat b.txt|wc -l` -eq 99 ] && {
          echo -e "\e[1;33m 数字已经输完!! \e[0m \n"
          break
      }
      num=`echo $(($RANDOM%100))`
      #如果是0或100就重新取值
      [ $num -eq 0 -o $num -eq 100 ] && continue
      filenum=`awk '{print $2}' b.txt`
      RAT=True
      for i in $filenum;do
          if [ $i -eq $num ];then
               RAT=False
               break
          fi
      done
      if [ $RAT == "True" ];then
           clear
           echo -e "\e[1;33m    $name: $num \e[0m \n"
           echo "$name $num" >> b.txt
           break
      fi
   done
done

shell小程序的更多相关文章

  1. Shell脚本 小程序演示

    一般的shell编程 场景贯穿了几个熟知的步骤: ●显示消息●获取用户输入●存储值到文件●处理存储的数据 这里写一个小程序 包含以上几部 #!/bin/bash while true do #echo ...

  2. 自动生成.py文件头部的C语言小程序

    每次都 vi xxx.py 然后再打 #!/usr/bin/env python 等等的程序头信息感觉有点麻烦,于是便想着写一个小程序自动生成这些头信息了,顺便在 ~/.bashrc 里写入 alia ...

  3. python学习之最简单的获取本机ip信息的小程序

    文章是从我的个人博客粘贴过来的,大家可以直接访问我的个人博客哦 http://www.iwangzheng.com 获取本机ip信息的命令ifconfig总是在用,这次拿到pyhton代码里,感觉py ...

  4. 【腾讯优测干货分享】微信小程序之自动化亲密接触

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/HcPakz5CV1SHnu-U8n85pw 导语 山雨欲来风满楼,最 ...

  5. JWebFileTrans(JDownload): 一款可以从网络上下载文件的小程序(二)

    一  前言 本文是上一篇博客JWebFileTrans:一款可以从网络上下载文件的小程序(一)的续集.此篇博客主要在上一篇的基础上加入了断点续传的功能,用户在下载中途停止下载后,下次可以读取断点文件, ...

  6. JWebFileTrans(JDownload): 一款可以从网络上下载文件的小程序(三),多线程断点下载

    一 前言 本篇博客是<JWebFileTrans(JDownload):一款可以从网络上下载文件的小程序>系列博客的第三篇,本篇博客的内容主要是在前两篇的基础上增加多线程的功能.简言之,本 ...

  7. 微信小程序语音识别服务搭建全过程解析(项目开源在github)

    silk v3录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) ## 重要的写在前面 重要事项一: 目前本文中提到的API已支持微信小程序录音文件格式:silk v ...

  8. 微信小程序语音识别服务搭建全过程解析(https api开放,支持新接口mp3录音、老接口silk录音)

    silk v3(或新录音接口mp3)录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) 重要的写在前面 重要事项一: 所有相关更新,我优先更新到我个人博客中,其它地方 ...

  9. 微信小程序语音与讯飞语音识别接口(Java)

    项目需求,需要使用讯飞的语音识别接口,将微信小程序上传的录音文件识别成文字返回 而微信小程序上传的文件格式是silk的,而讯飞接口能识别wav 格式的文件,所以需要将小程序上传的silk文件转成wav ...

随机推荐

  1. 问题-Delphi控件选择卡自动选择与滚动方法

    问题现象: 在D7的控件工具条中每次要手动点向左向右很累,有没有方法可以自动移动.   问题解决: REGEDIT4 [HKEY_CURRENT_USER\Software\Borland\Delph ...

  2. vs之Nuget

    1.http://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx 2.在Nuget控制台中安装特定版本: Install-Package <程序包 ...

  3. Asp.Net事务和异常处理:

    Asp.Net事务和异常处理: 一.什么是事务处理? 事务处理是一组组和成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性. 如果在事务过程中没有遇到错误, ...

  4. linux centos6 NAT 端口转发

    有很多时候我们为了安全,需要将例如数据库服务器放到内网中.但是有些时候又系统给外网开一个端口,这时就可以利用外网的服务器进行一个端口转发.今天我们以centos6 为例进行端口转发配置. 首先vi / ...

  5. orderby group by

    说到SQL语句,大家最開始想到的就是他的查询语句: select* from tableName: 这是最简单的一种查询方式,不带有不论什么的条件. 当然在我们的实际应用中,这条语句也是非经常常使用到 ...

  6. WdatePicker开始日期不能大于结束日期

    <input class="input_calendar inputcss" id="startDate" runat="server" ...

  7. Django中载入js和css文件

    Django中载入js和css文件 项目的文件夹结构例如以下: mysite |-mysite |-|-static |-|---js和css文件 |-|-|-init.py |-| |-models ...

  8. 部署SharePoint解决方式包时遇到的问题

    部署SharePoint解决方式包时遇到的问题 近期我在使用STSADM.EXE命令部署解决方式包的时候.遇到一个问题.很的难搞.         创建WSP文件非常easy.加入到解决方式库也非常e ...

  9. iOS使用宏写单例

    本文只介绍ARC情况下的单例 过去一直背不下来单例如何写,就是知道这么回事,也知道通过宏来写单例,但是一直记不住,今天就来记录一下 - (void)viewDidLoad {     [super v ...

  10. javascript 递归之 快速排序

    1. 快速排序思想 (1)在数据集之中,选择一个元素作为"基准"(pivot). (2)所有小于"基准"的元素,都移到"基准"的左边:所有大 ...