打印一百次, 每次取一个随机数, 且数字不重复.

要求: , 仅允许用一次循环切循环用于每次取数, 判断是否重复不可以用循环判断.

#!/bin/bash
function gree() {
echo -e "\033[32m$*\033[0m"
}

function red() {
echo -e "\033[31m$*\033[0m"
}

function please_input_name () {
    echo -en "\033[32m请输入您的名称: \033[0m" && read  num
    return $num
}

function build_some_num () {
    declare -A list_num
    declare -A num_total
    
    for i in {0..99}
    do
        num_total[$i]=$i
    done
    echo 1 
    while true
    do
        #please_input_name

        #取出的数序号,第多少个数,范围是1~数组长度+1
        list_num=`echo "$RANDOM%${#num_total[*]}+1" | bc`
        echo 取出的第多少个数: $list_num
        #echo "${num_total[@]}"
        sleep 1
        #打印取出的数下标
        xiabiao=`echo ${!num_total[@]} | awk  -v list_num=$list_num '{print $list_num}'`
        #打印取到的数组下标,数组值
        echo $xiabiao
        echo ${num_total[$xiabiao]}
        #移除这个已经取到的数
        unset num_total[`echo "$list_num-1" | bc`] 
        
    done
}


function main () {
    echo "$1" # arguments are accessible through $1, $2,...
    build_some_num
}


main

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值