您的位置:首页 > 运维架构 > Shell

shell小程序

2015-04-14 13:11 113 查看
因此需要挑选学生,因此需要一个抓阄的程序:
要求:
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: