shell小程序

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

#!/bin/bash
#author:wangbaigui
#qq:623385992

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
num=`echo $RANDOM`
filenum=`awk ‘{print $2}‘ b.txt`
RAT=True
for i in $filenum;do
if [ $i -eq $num ];then
echo "alread"
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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。