Shell编程案例:抽奖程序(从班级名单里随机抽取学生名字)

思路

先生成一个班级学生名单文件 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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值