bash小练习>抽奖

[root@moli tmp]# cat wx.txt
小可爱
王可爱
小夹子
小李子
亲爱的
思随机
幻er
天量的

[root@moli tmp]# cat lottery.sh
#! /bin/bash

# 定义一个函数
rand(){
        # local定义局部变量
        # 使用 ..代替空格
        local seeds=`while read line;do echo ${line// /..}; done < wx.txt`
        local count=0
        while [[ $count != 1 ]];do
                # 从seeds中筛选出一部分人
                # RANDOM%2 生成0/1随机数  0的时候  后面的短路
                seeds=`for seed in $seeds;do (($RANDOM%2)) && echo $seed;done`
                count=`echo "$seeds" | wc -l`
        done
        # 防止空白操作
        if [[ $seeds == "" ]];then
                rand
        else
                echo $seeds
        fi
}

# 筛选出多个人
res(){
        for ((i=0;i<$1;i++));do
                tmp=`rand`
                while [[ `is_repeat $tmp` == 0 ]];do
                        tmp=`rand`
                done
                arrs[$i]=$tmp
        done
        echo ${arrs[@]}  # @也可以时*
}

# 把输进来的数据 与数组内的数据比较
is_repeat(){
        # 如何遍历数组
        for arr in ${arrs[@]};do
                # $1 是执行函数时的传参
                if [[ $arr == $1 ]];then
                        echo 0;
                        return 0;
                fi
        done
        echo 1;
        return 1;
}

# 执行脚本时的传参
res $1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值