思路
先生成一个班级学生名单文件 student_name.txt
我这里在文件里放入了9个学生的名字,使用以下命令可以统计出行数。
cat student_name.txt |wc -l
实现抽奖,即需要实现随机。
以下命令可以实现产生一个1-9区间的随机数。
echo $((RANDOM%9 + 1))
脚本内容
#!/bin/bash
#清空中奖文件,保证每次执行抽奖脚本都是从头开始
>lucky_person.txt
#读取student_name.txt里的文件
num=$(cat student_name.txt|wc -l)
while true
do
lucky_num=$((RANDOM % num + 1))
lucky_person=$(cat student_name.txt|head -n $lucky_num|tail -1)
#lucky_peron.txt是中过奖人的名单
#将抽奖结果,输出重定向到/dev/null文件里,不输出到终端
if ! grep $lucky_person lucky_person.txt &>/dev/null
#只输出第一次中奖的人的名字,并将中奖同学的名字记录到lucky_person.txt文件中
then
echo "$lucky_person 中奖了"
echo $lucky_person >>lucky_person.txt
fi
read -p "请输入任意键继续,按去q退出" option
if [[ $option == "q" || $option == "Q" ]]
then
break
fi
echo "中过奖的人的名单"
echo "###################"
cat lucky_person.txt
echo "###################"
#判断是否所有的人都抽中奖了
num2=$(cat lucky_person.txt|wc -l)
if (($num == $num2))
then
echo "所有人都中奖了,退出重新开始"
break
done