美文网首页
shell脚本实现抓阄

shell脚本实现抓阄

作者: 南南宫问天 | 来源:发表于2020-04-18 21:40 被阅读0次
[root@czq ~]# cat test.sh 
#!/bin/bash
cat <<EOF  ##定义显示的信息
=============================================
            抓阄
输入你的名字首字母,如果有重名就在后面加上数字区分
    数字最大的前三名胜利
=============================================
EOF

>/tmp/pass ##定向创建个一空文件
suess(){ ##定义一个函数
echo "你们三人最大"
cat /tmp/pass |sort -rk2|head -n 3 #排序过滤并显示前3行
exit 0  ##退出脚本
}

while true  ##死循环
do
  num=`mkpasswd -d 2 -s 0 | sed 's#[a-Z]##g'` ##定义一个变量,变量是随机产生的两位数
  while [ `grep $num /tmp/pass|wc -l` -ne 1 ] ##循环$num是否存在于/tmp/pass,不存在就执行下面的内容
  do
    read -p "输入你的名字首字母:" name   
      if [[ ! "$name" =~ [a-Z] ]] ##如果输入的值不是字母开头的
    then
    echo "请输入名字首字母"  
    break 1 ##跳出这层循环
      fi
      if [[ "$name" = "exit" ]] ##当用户输入了exit
        then
    suess  ##执行函数suess的内容
      fi
      if [ `grep $name /tmp/pass|wc -l` -eq 1 ] ##判断$name是否存在于/tmp/pass 
    then 
    echo "有人和你重名,可以在名字后加上数组来区别"
    break 1 ##跳出这层循环
      fi
      echo "$name的数字是: $num"
      echo -e "$name\t$num" >> /tmp/pass ##把名字和获得的值追加到/tmp/pass
    done
done

测试脚本

[root@czq ~]# sh test.sh 
===============================================
            抓阄
输入你的名字首字母,如果有重名就在后面加上数字区分
    数字最大的前三名胜利
===============================================
输入你的名字首字母:czq
czq的数字是: 72
输入你的名字首字母:cxy
cxy的数字是: 20
输入你的名字首字母:xzs
xzs的数字是: 13
输入你的名字首字母:ppp
ppp的数字是: 34
输入你的名字首字母:jkl
jkl的数字是: 97
输入你的名字首字母:exit
你们三人最大
jkl 97
czq 72
ppp 34

##出现重名的情况
[root@czq ~]# sh test.sh 
===============================================
            抓阄
输入你的名字首字母,如果有重名就在后面加上数字区分
    数字最大的前三名胜利
===============================================
输入你的名字首字母:czq
czq的数字是: 67
输入你的名字首字母:czq
有人和你重名,可以在名字后加上数组来区别
输入你的名字首字母:czq2
czq2的数字是: 44
输入你的名字首字母:czq3
czq3的数字是: 90
输入你的名字首字母:exit
你们三人最大
czq3    90
czq 67
czq2    44

相关文章

网友评论

      本文标题:shell脚本实现抓阄

      本文链接:https://www.haomeiwen.com/subject/rtgavhtx.html