shell脚本实现抓阄
2020-04-18 本文已影响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